lkml.org 
[lkml]   [2006]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Remapping pages mapped to userspace (was: [PATCH 10 of 20] ipath - support for userspace apps using core driver)


    On Fri, 17 Mar 2006, Bryan O'Sullivan wrote:
    >
    > It would be unfortunate if userspace were spinning on a chip register,
    > waiting for the register to transition from zero to non-zero, and we
    > replaced that mapping with an anonymous page. In that case, userspace
    > could potentially spin forever, having no way to detect the demise of
    > the device.

    Generally, replacing the mmap with an anonymous zero-mapped mapping would
    be a horribly bad idea.

    The fact is, you can't avoid the race of seeing the removed state (which
    _usually_ means that you will read 0xffffffff from the bus - normal PC's
    won't result in bus errors etc). Whatever the kernel does, it can do only
    after the device has already been removed - we no longer live in a world
    where the administrator can tell the system before-hand that something
    will go away.

    Replacing the MMIO map with a zero map would be absolutely horrible. It
    would be inconsistent, and not even help the fact that the user will haev
    seen the removed state.

    In fact, I think even "revert" is pretty useless. You're much better off
    just sending a perfectly good signal - something that the app will get
    regardless of whether it reads the MMIO space at that point in time or
    not. After all, the only thing the "revert" would really do is to send a
    signal, but then only if the user is trying to access the device.

    Anyway, zap_page_range() would do what you want, but it's not exported,
    and I'm not convinced it's even something we want to export. You can only
    zap a page range from within the context of the zappee, not from an
    external module/driver.

    [ Maybe it works if somebody else calls it, maybe it doesn't. I wouldn't
    bet on it, and more importantly, I can pretty much _guarantee_ that a
    driver will get the "struct mm_struct" reference counting wrong. ]

    Linus
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2009-11-18 23:46    [W:4.904 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site