RE: Broadcom Swarm support

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

 



Ralf Baechle wrote, on June 27, 2009 8:49 AM
> On Wed, Jun 24, 2009 at 03:18:24PM -0700, Kaz Kylheku wrote:
> 
> > +void __flush_icache_page(struct vm_area_struct *vma, 
> struct page *page)
> > +{
> > +	if (vma->vm_flags & VM_EXEC)
> > +		flush_icache_range((unsigned long) page_address(page),
> > PAGE_SIZE); 
> > +}
> 
> Flush_icache_range takes two arguments, start and end address.  Both
> addresses are the virtual addresses at which the code will 
> run.

Thanks for pointing that out. After wiping some egg of my face,
I'm now testing this change:

 void __flush_icache_page(struct vm_area_struct *vma, struct page *page)
 {
        if (vma->vm_flags & VM_EXEC)
-               flush_icache_range((unsigned long) page_address(page),
PAGE_SIZE);
+               flush_icache_range(vma->vm_start, vma->vm_end);
 }

I see a small performance improvement, suggesting that it's flushing
cache lines more precisely.

But I am now more confused, because it turns out that my kernel still
runs
fine now if I turn the function into a noop!

We must have fixed something since the time I was getting this kernel
running. Or it could be that I'm using a CF from a different
manufacturer.

Still, there is the observation that this flush_icache_page restoration
also gets Aurelien's Swarm up and running.



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

  Powered by Linux