public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Arjan van de Ven <arjan@linux.intel.com>
To: "Thomas Hellström" <thomas@tungstengraphics.com>
Cc: Dave Airlie <airlied@redhat.com>,
	linux-kernel@vger.kernel.org, tglx@linutronix.de,
	mingo@redhat.com
Subject: Re: [PATCH] x86: create array based interface to change page attribute
Date: Mon, 31 Mar 2008 02:33:11 -0700	[thread overview]
Message-ID: <47F0AFD7.5080307@linux.intel.com> (raw)
In-Reply-To: <47F08AC1.6010406@tungstengraphics.com>

Thomas Hellström wrote:
> Dave Airlie wrote:
>> When cpa was refactored to the new set_memory_ interfaces, it removed
>> a special case fast path for AGP systems, which did a lot of page by page
>> attribute changing and held the flushes until they were finished. The
>> DRM memory manager also required this to get useable speeds.
>>
>> This introduces a new interface, which accepts an array of memory 
>> addresses
>> to have attributes changed on and to flush once finished.
>>
>> Further changes to the AGP stack to actually use this interface will be
>> published later.
>>
>> Signed-off-by: Dave Airlie <airlied@redhat.com>
>> ---
>>  arch/x86/mm/pageattr-test.c  |   12 ++-
>>  arch/x86/mm/pageattr.c       |  164 
>> +++++++++++++++++++++++++++++++-----------
>>  include/asm-x86/cacheflush.h |    3 +
>>  3 files changed, 132 insertions(+), 47 deletions(-)
>>   
> ...
> Dave,
> Nice work, but how do we handle highmem pages? 

Cache attributes fundamentally work on a mapping and not on physical memory.
(MTRR's are special there, they do work on physical memory, but that's a special case and not relevant here)

So to be honest, your question doesn't make sense;  because all I can do is ask "which mapping of these pages".

Even the old interfaces prior to 2.6.24 only managed to deal with SOME of the mappings of a page.
And if/when future CPUs don't require all mappings to be in sync, clearly the kernel will only change
the mapping that is requested as well.



> Since this is an AGPgart and DRM fastpath, the interface should ideally 
> be adapted to match the data structures used by those callers. 

Actually, the interface has to make sense conceptually convey the right information,
the implementation should not have to second guess internals of AGP/DRM because that
would just be a recipe for disaster.
>The 
> AGPgart module uses an array of addresses, which effectively stops it 
> from using pages beyond the DMA32 limit. The DRM memory manager uses an 
> array of struct page pointers, but using that was, If I understand 
> things correctly, rejected.

yes because simply put, if you pass a struct page to such a function, you're not telling it which
mapping or mappings you want changed....
(And if you say "only the 1:1 mapping, so why doesn't the other side calculate that"... there's no speed gain in doing
the calculation for that on the other side of an interface, and that makes it zero reason to misdesign the interface
to only have the "which mapping" information implicit)


  reply	other threads:[~2008-03-31  9:33 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-31  5:19 [PATCH] x86: create array based interface to change page attribute Dave Airlie
2008-03-31  6:54 ` Thomas Hellström
2008-03-31  9:33   ` Arjan van de Ven [this message]
2008-03-31 11:04     ` Thomas Hellström
2008-03-31  7:25 ` Andi Kleen
2008-03-31  7:55   ` Thomas Hellström
2008-03-31  8:38     ` Andi Kleen
2008-03-31  9:06       ` Thomas Hellström
2008-03-31  9:18         ` Andi Kleen
2008-03-31 11:10           ` Thomas Hellström
2008-03-31 16:08             ` Arjan van de Ven
2008-03-31 16:41               ` Thomas Hellström
2008-03-31 16:49                 ` Arjan van de Ven
2008-03-31 17:26                   ` Thomas Hellström
2008-04-01 20:58                     ` Arjan van de Ven
2008-04-01 21:29                       ` Thomas Hellström
2008-04-01 22:30                         ` Arjan van de Ven
2008-04-02  6:30                           ` Thomas Hellström
2008-04-02  6:35                             ` Arjan van de Ven
2008-04-02  6:59                               ` Thomas Hellström
2008-04-02 14:01                                 ` Arjan van de Ven
2008-04-02 17:57                                   ` Thomas Hellström
2008-04-07 18:23                                     ` Jesse Barnes
2008-04-07 19:51                                       ` Thomas Hellström
2008-04-07 19:59                                         ` Jesse Barnes
2008-04-07 20:46                                           ` Thomas Hellström
2008-04-07 20:57                                             ` Arjan van de Ven
2008-04-08  6:12                                               ` Thomas Hellström
2008-04-07 21:04                                             ` Jesse Barnes
2008-04-08  6:21                                               ` Thomas Hellström
2008-04-08 14:27                                                 ` Jesse Barnes
2008-04-07 20:56                                           ` Arjan van de Ven
2008-04-07 21:02                                             ` Jesse Barnes
2008-04-07 21:09                                               ` Jesse Barnes
2008-03-31  9:56   ` Arjan van de Ven
2008-03-31 11:21   ` Dave Airlie
2008-03-31 11:46     ` Andi Kleen
2008-04-02  1:35       ` Dave Airlie
2008-04-01 18:20 ` Arjan van de Ven

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=47F0AFD7.5080307@linux.intel.com \
    --to=arjan@linux.intel.com \
    --cc=airlied@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=thomas@tungstengraphics.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox