From: "Thomas Hellström" <thellstrom@vmware.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: "Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>,
Linux kernel mailing list <linux-kernel@vger.kernel.org>,
"Siddha, Suresh B" <suresh.b.siddha@intel.com>
Subject: Re: 2.6.29 pat issue
Date: Fri, 06 Feb 2009 10:43:08 +0100 [thread overview]
Message-ID: <498C062C.201@vmware.com> (raw)
In-Reply-To: <m1tz78pdwy.fsf@fess.ebiederm.org>
Eric W. Biederman wrote:
> Thomas Hellstrom <thellstrom@vmware.com> writes:
>
>
>
>> Indeed, it's crucial to keep the mappings consistent, but failure to do so is a
>> kernel driver bug, it should never be the result of invalid user data.
>>
>
> It easily can be. Think of an X server mmaping frame buffers. Or other
> device bars.
>
>
Hmm, Yes you're right, although I'm still a bit doubtful about RAM pages.
Wait. Now I see what's causing the problems. The code is assuming that
VM_PFNMAP vmas never map RAM pages. That's also an invalid assumption.
See comments in mm/memory.c
So probably the attribute check should be done for the insert_pfn path
of VM_MIXEDMAP as well. That's not done today.
So there are three distinct bugs at this point:
1) VMAs with VM_PFNMAP are incorrectly assumed to be linear if
vma->vm_pgoff non-null.
2) VM_PFNMAP VMA PTEs are incorrectly assumed to never point to physical
RAM.
3) There is no check for the insert_pfn path of vm_insert_mixed().
>
>> IMHO checking each vm_insert_pfn() for caching attribute correctness is not
>> something that should be enabled by default, due to the CPU overhead. Production
>> drivers should never violate this.
>>
>
> If it is a problem the implementation should become more efficient. Userspace
> as well as drivers can generate these mappings so even with a perfect driver
> you cannot guarantee that someone else does not have that area of memory
> mapped differently.
>
OK, So there seems to be a couple of things that can be done for
performance here:
1) A fastpath for single pages.
2) RAM pages are tracked with a page bit today.
Why not say "all memory backed by a struct page" should be tracked with
a page bit. Then pfn_valid() could be used instead of page_is_ram().
This, combined with 1) should make tracking struct page backed pages
extremely fast.
3) If vm_insert_pfn() happens to be used on a linear VMA, it looks like
the whole VMA is being validated for each vm_insert_pfn(), which seems
extremely inefficient, considering the extensive tests in pagerame_is_ram().
/Thomas
> Eric
>
next prev parent reply other threads:[~2009-02-06 9:43 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-05 12:47 2.6.29 pat issue Thomas Hellström
2009-02-05 18:03 ` Pallipadi, Venkatesh
2009-02-05 21:32 ` Thomas Hellstrom
2009-02-05 23:08 ` Pallipadi, Venkatesh
2009-02-06 9:51 ` Thomas Hellström
2009-02-06 1:11 ` Eric W. Biederman
2009-02-06 9:43 ` Thomas Hellström [this message]
2009-03-04 6:08 ` Pallipadi, Venkatesh
2009-03-04 9:56 ` Thomas Hellstrom
2009-03-06 22:38 ` Pallipadi, Venkatesh
2009-03-06 23:44 ` Thomas Hellstrom
2009-03-10 1:39 ` Pallipadi, Venkatesh
2009-03-10 8:22 ` Thomas Hellstrom
2009-03-10 17:42 ` Pallipadi, Venkatesh
2009-03-11 9:17 ` Thomas Hellstrom
2009-03-11 9:33 ` Ingo Molnar
2009-03-11 17:54 ` [PATCH] VM, x86, PAT: Change implementation of is_linear_pfn_mapping Pallipadi, Venkatesh
2009-03-11 22:09 ` Frans Pop
2009-03-12 0:31 ` Pallipadi, Venkatesh
2009-03-12 3:22 ` Pallipadi, Venkatesh
2009-03-12 5:45 ` Frans Pop
2009-03-12 18:59 ` Pallipadi, Venkatesh
2009-03-12 20:30 ` Frans Pop
2009-03-12 22:48 ` Pallipadi, Venkatesh
2009-03-13 0:36 ` Ingo Molnar
2009-03-13 0:45 ` [PATCH] VM, x86, PAT: Change is_linear_pfn_mapping to not use vm_pgoff Pallipadi, Venkatesh
2009-03-13 4:03 ` [tip:x86/urgent] " Pallipadi, Venkatesh
2009-03-13 16:25 ` Nick Piggin
2009-03-13 17:00 ` Pallipadi, Venkatesh
2009-03-14 2:52 ` Nick Piggin
2009-03-13 23:35 ` [PATCH] Add a new vm flag to track full pfnmap at mmap Pallipadi, Venkatesh
2009-03-14 2:53 ` Nick Piggin
2009-03-14 8:54 ` [tip:x86/urgent] VM, x86, PAT: add " Pallipadi, Venkatesh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=498C062C.201@vmware.com \
--to=thellstrom@vmware.com \
--cc=ebiederm@xmission.com \
--cc=linux-kernel@vger.kernel.org \
--cc=suresh.b.siddha@intel.com \
--cc=venkatesh.pallipadi@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.