[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-arm-kernel
Subject:    Re: On TLB flushing
From:       Marc Singer <elf () buici ! com>
Date:       2004-04-16 17:37:05
Message-ID: 20040416173705.GA13736 () flea
[Download RAW message or body]

On Fri, Apr 16, 2004 at 05:51:09PM +0100, Russell King - ARM Linux wrote:
> > Let me understand this.  
> > 
> > The kernel has knowingly removed the PTE without flushing the TLB.
> 
> No.  You're looking at it from too low a level.  Take a moment to stand
> back and look at what's happening from a higher level.

Thanks a lot for your comments.  It's difficult to see how this works
without explanation.

Now, I think I know more about what's going on.  I'd have liked to
come to you with a solution, but I'm not sure where to look.

It turns out that try_to_unmap_one () is correctly calling the TLB
flush function...with the wrong virtual address.  The trouble is, I
don't know how this address should be formed.

The call ptep_to_address () looks into the node data and composes an
address.  

    unmap: breakin ptep c0341820 address 00104000
    kmap_atomic_to_page c0235228
    low_bits 00104000
    page->index 00000000

The address value needs to be 0x00008000 for a correct cache and TLB
flush.  I know this is a big question: how is this supposed to work?



-------------------------------------------------------------------
Subscription options: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ:       http://www.arm.linux.org.uk/armlinux/mlfaq.php
Etiquette: http://www.arm.linux.org.uk/armlinux/mletiquette.php
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic