Re: [MIPS] SB1: Build fix: delete initialization of flush_icache_page pointer.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 28, 2006 at 01:27:12PM +0900, Atsushi Nemoto wrote:
> Date:	Thu, 28 Sep 2006 13:27:12 +0900 (JST)
> To:	manoje@xxxxxxxxxxxx
> Cc:	linux-mips@xxxxxxxxxxxxxx, ralf@xxxxxxxxxxxxxx,
> 	mark.e.mason@xxxxxxxxxxxx
> Subject: Re: [MIPS] SB1: Build fix: delete initialization of
>  flush_icache_page pointer.
> From:	Atsushi Nemoto <anemo@xxxxxxxxxxxxx>
> Content-Type: Text/Plain; charset=us-ascii
> 
> On Wed, 27 Sep 2006 19:17:16 -0700, "Manoj Ekbote" <manoje@xxxxxxxxxxxx> wrote:
> > I added a line that initializes the flush_icache_page pointer in
> > sb1_cache_init.
> > The below method worked. The SMP kernel boots fine now. Removing parts
> > of local_sb1_flush_icache_page doesn't help. It looks like
> > flush_icache_page in mm/memory.c:do_no_page is needed. Removing it will
> > fail the boot process.
> 
> Thank you for testing.
> 
> Now I'm wondering why do_no_page() works on SMP.
> 
> 	if (pte_none(*page_table)) {
> 		flush_icache_page(vma, new_page);
> 		entry = mk_pte(new_page, vma->vm_page_prot);
> 		if (write_access)
> 			entry = maybe_mkwrite(pte_mkdirty(entry), vma);
> 		set_pte_at(mm, address, page_table, entry);
> ...
> 	} else {
> 		/* One of our sibling threads was faster, back out. */
> 		page_cache_release(new_page);
> 		goto unlock;
> 	}
> 
> 	/* no need to invalidate: a not-present page shouldn't be cached */
> 	update_mmu_cache(vma, address, entry);
> 
> Other CPU might be able to load new pte value just after set_ste_at(),
> but dcache is not flushed until update_mmu_cache().  Maybe I missed
> something...
> 
> > I am wondering if people have booted the latest tree on non-Broadcom
> > boards...curious to know if the removal of flush_icache_page has
> > affected them.
> 
> Yes, Ralf and Thiemo said even some SB1 boards can work fine without
> flush_icache_page.

The have to by definition - flush_icache_page is going to go away.

Note the SB1 cache code is a bizarre beast.  It totally avoids Hit-type
cacheops because those used to have problems on early silicon.  So my
favorite solution would be to dump c-sb1.c and deal with any SB1 issues
that may pop up in c-r4k.c.

  Ralf


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux