FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Kernel Team

 
 
LinkBack Thread Tools
 
Old 05-27-2010, 11:39 PM
Nigel Cunningham
 
Default UBUNTU: SAUCE: dove: avoid page table overwrite when resuming from hibernation

Hi Rafael.

On 28/05/10 09:29, Rafael J. Wysocki wrote:
> On Thursday 27 May 2010, Nigel Cunningham wrote:
>> Hi.
>>
>> On 28/05/10 01:35, Tim Gardner wrote:
>>> Test results in the LP report look good. Has this patch been upstreamed?
>>> I cannot remember from the original discussions a few weeks ago.
>>
>> I noticed this thread last night and brought it to Rafael's attention,
>> because I don't remember seeing anything like this before.
>
> I'm not sure what patch is being referred to. Any details, please?

Sorry - I thought I gave you the url to the bug report in my previous email.

http://bugs.launchpad.net/bugs/509006

To quote from the patch Ubuntu is applying:

Resuming from hibernation is OK if 'resume=/dev/sdaX' is explicitly
specified on the kernel command line, but it fails if scripts in
initramfs are used to trigger the resume. It turned out to be page
table being overwritten when restoring the memory content because
it's using a normal user process's page table in the latter case,
which is not safe and could be overwritten. Fix this by using the
safe swapper_pg_dir during restoring.

It's an arm specific fix (touching arch/arm/mach-dove/swsusp.S and the
Makefile in the same directory) but I wondered whether this might in any
way be relevant to vanilla. Perhaps there's something more generic, like
a failure to set KERNEL_DS in that code path that might be a more
correct fix and might also be relevant to other architectures. (Not that
I've seen any failures with x86/x86_64) from an initramfs). Hmm - could
be. I explicitly set KERNEL_DS in TuxOnIce, but don't see it done
anywhere (from a quick check) in vanilla.

Regards,

Nigel

--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 05-28-2010, 04:20 AM
Nigel Cunningham
 
Default UBUNTU: SAUCE: dove: avoid page table overwrite when resuming from hibernation

Hi Eric.

On 28/05/10 14:13, Eric Miao wrote:
> Forget about upstream at this moment, since the hibernation support for Dove
> is quite specific now, and even it's going to be supported in
> upstream, it will have
> to made generic so other SoC can benefit. This patch isn't ready for
> upstream yet.

I understand that the arch isn't in upstream. I think that the issue is
though. If I'm right, you're seeing this issue not because of a problem
in your arch specific code, but because of a problem in vanilla that's
more easily triggered on your arch. That's why I wanted to bring it to
Rafael's attention.

Regards,

Nigel

--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 05-28-2010, 08:26 PM
"Rafael J. Wysocki"
 
Default UBUNTU: SAUCE: dove: avoid page table overwrite when resuming from hibernation

On Friday 28 May 2010, Eric Miao wrote:
> On Fri, May 28, 2010 at 12:20 PM, Nigel Cunningham
> <ncunningham@crca.org.au> wrote:
> > Hi Eric.
> >
> > On 28/05/10 14:13, Eric Miao wrote:
> >>
> >> Forget about upstream at this moment, since the hibernation support for
> >> Dove
> >> is quite specific now, and even it's going to be supported in
> >> upstream, it will have
> >> to made generic so other SoC can benefit. This patch isn't ready for
> >> upstream yet.
> >
> > I understand that the arch isn't in upstream. I think that the issue is
> > though. If I'm right, you're seeing this issue not because of a problem in
> > your arch specific code, but because of a problem in vanilla that's more
> > easily triggered on your arch. That's why I wanted to bring it to Rafael's
> > attention.
> >
>
> Ah right. I seem to remember the x86 has a workaround to avoid the issue of
> page table being overwritten by copying back-n-forth.

Yes, it does. We create temporary page tables before the copying on x86.

> I'm not sure if there are any specific way of doing so. In ARM case,
> temporarily using the init page table seems to be a workable solution,
> though.

That used to work on x86 too, but we had to use a different approach because
of some low-level changes of the arch memory management.

Rafael

--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 
Old 05-31-2010, 07:44 AM
Stefan Bader
 
Default UBUNTU: SAUCE: dove: avoid page table overwrite when resuming from hibernation

On 05/31/2010 03:50 AM, Eric Miao wrote:
> On Thu, May 27, 2010 at 11:35 PM, Tim Gardner <tim.gardner@canonical.com> wrote:
>> On 05/27/2010 09:03 AM, Eric Miao wrote:
>>>
>>> From 1ae0436f8c2159936ca42d9ef938055b68af64f7 Mon Sep 17 00:00:00 2001
>>> From: Eric Miao<eric.miao@canonical.com>
>>> Date: Fri, 23 Apr 2010 14:16:17 +0800
>>> Subject: [PATCH] UBUNTU: SAUCE: dove: avoid page table overwrite when
>>> resuming from hibernation
>>>
>>> BugLink: http://bugs.launchpad.net/bugs/509006
>>>
>>> Resuming from hibernation is OK if 'resume=/dev/sdaX' is explicitly
>>> specified on the kernel command line, but it fails if scripts in
>>> initramfs are used to trigger the resume. It turned out to be page
>>> table being overwritten when restoring the memory content because
>>> it's using a normal user process's page table in the latter case,
>>> which is not safe and could be overwritten. Fix this by using the
>>> safe swapper_pg_dir during restoring.
>>>
>>> Signed-off-by: Eric Miao<eric.miao@canonical.com>
>>> ---
>>>
>>> It was posted weeks ago, thought it was merged but not. This is an updated
>>> version addressing the previous comments to make it cleaner.
>>>
>>> arch/arm/mach-dove/Makefile | 2 ++
>>> arch/arm/mach-dove/swsusp.S | 8 ++++++++
>>> 2 files changed, 10 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-dove/Makefile b/arch/arm/mach-dove/Makefile
>>> index 0be1e1c..c5c028f 100755
>>> --- a/arch/arm/mach-dove/Makefile
>>> +++ b/arch/arm/mach-dove/Makefile
>>> @@ -1,3 +1,5 @@
>>> +AFLAGS_swsusp.o := -DTEXT_OFFSET=$(TEXT_OFFSET)
>>> +
>>> obj-y += clock.o common.o addr-map.o irq.o pcie.o
>>> mpp.o
>>> sdhci_cam_mbus.o
>>> obj-$(CONFIG_MACH_DOVE_RD_AVNG) += dove-rd-avng-setup.o
>>> diff --git a/arch/arm/mach-dove/swsusp.S b/arch/arm/mach-dove/swsusp.S
>>> index 4f4a884..9b752a0 100644
>>> --- a/arch/arm/mach-dove/swsusp.S
>>> +++ b/arch/arm/mach-dove/swsusp.S
>>> @@ -28,6 +28,7 @@
>>> */
>>>
>>> #include<linux/linkage.h>
>>> +#include<asm/memory.h>
>>> #include<asm/segment.h>
>>> #include<asm/page.h>
>>> #include<asm/asm-offsets.h>
>>> @@ -209,8 +210,15 @@ FUNC(swsusp_arch_suspend)
>>>
>>> FUNC_END(swsusp_arch_suspend)
>>>
>>> +#define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET)
>>> +#define SWAPPER_PG_DIR (KERNEL_RAM_PADDR - 0x4000)
>>> +
>>> FUNC(swsusp_arch_resume)
>>> /* set page table if needed */
>>> + ldr r0, =SWAPPER_PG_DIR
>>> + mcr p15, 0, r0, c2, c0, 0 @ load page table pointer
>>> + mcr p15, 0, r0, c8, c7, 0 @ invalidate I,D TLBs
>>> + mcr p15, 0, r0, c7, c5, 4 @ ISB
>>>
>>> /*
>>> * retore "nr_copy_pages" pages which are saved and specified
>>
>> Test results in the LP report look good. Has this patch been upstreamed? I
>> cannot remember from the original discussions a few weeks ago.
>>
>> Acked-by: Tim Gardner <tim.gardner@canonical.com>
>>
>
> Andy,
>
> Ping?

Wrong person pinged. This is for Lucid, right? I try to use the quiteness today
to get through all pending and ready SRUs.

-Stefan

--
kernel-team mailing list
kernel-team@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/kernel-team
 

Thread Tools




All times are GMT. The time now is 09:35 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org