Re: [PATCH] [7/48] Suspend2 2.1.9.8 for 2.6.12: 352-disable-pdflush-during-suspend.patch

Nigel Cunningham
2005-07-06T05:23:07Z

Hi.

On Wed, 2005-07-06 at 13:34, Zwane Mwaikambo wrote:
> On Wed, 6 Jul 2005, Nigel Cunningham wrote:
>
> > diff -ruNp 353-disable-highmem-tlb-flush-for-copyback.patch-old/mm/highmem.c 353-disable-highmem-tlb-flush-for-copyback.patch-new/mm/highmem.c
> > --- 353-disable-highmem-tlb-flush-for-copyback.patch-old/mm/highmem.c 2005-06-20 11:47:32.000000000 +1000
> > +++ 353-disable-highmem-tlb-flush-for-copyback.patch-new/mm/highmem.c 2005-07-04 23:14:20.000000000 +1000
> > @@ -26,6 +26,7 @@
> > #include <linux/init.h>
> > #include <linux/hash.h>
> > #include <linux/highmem.h>
> > +#include <linux/suspend.h>
> > #include <asm/tlbflush.h>
> >
> > static mempool_t *page_pool, *isa_page_pool;
> > @@ -95,7 +96,10 @@ static void flush_all_zero_pkmaps(void)
> >
> > set_page_address(page, NULL);
> > }
> > - flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
> > + if (test_suspend_state(SUSPEND_FREEZE_SMP))
> > + __flush_tlb();
> > + else
> > + flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP));
> > }
> >
> > static inline unsigned long map_new_virtual(struct page *page)
>
> What state are the other processors in when you hit this path?

Looping in arch specific code, waiting for an atomic_t to tell them it's
time to restore state and carry on. They're there the whole time CPU0 is
restoring the image and highmem.

Regards,

Nigel
--
Evolution.
Enumerate the requirements.
Consider the interdependencies.
Calculate the probabilities.
Be amazed that people believe it happened.