From: Ben Guthro <bguthro@virtualiron.com>
To: Tim Deegan <Tim.Deegan@xensource.com>
Cc: Gary Grebus <ggrebus@virtualiron.com>,
xen-devel <xen-devel@lists.xensource.com>
Subject: Re: [PATCH] Fix Vista screen clear on AMD
Date: Thu, 25 Oct 2007 07:25:34 -0400 [thread overview]
Message-ID: <47207D2E.8070209@virtualiron.com> (raw)
In-Reply-To: <20071025091630.GE23658@york.uk.xensource.com>
[-- Attachment #1.1: Type: text/plain, Size: 2450 bytes --]
hmm,
Its certainly possiible that I ported this incorrectly to unstable. I
have attached the original patch that applies to 3.1.1 for your review.
As for the details on why this patch was written this way - I will let
the original author field that (Gary)
If this is not necessary anymore, as you said below - perhaps this code
should be removed entirely?
Ben
Tim Deegan wrote:
> Hi Ben, Gary,
>
> At 17:07 -0400 on 24 Oct (1193245642), Ben Guthro wrote:
>
>> Patch to fix horribly slow screen clear during Vista 32 installation
>> on AMD.
>>
>
> Can you explain what the patch does? It seems to extend the need for
> extra update_cr3() calls to the 64bit hypervisor case and then cause it
> never to happen at all.
>
>
>> diff -r 64544443e6d6 xen/arch/x86/mm/shadow/common.c
>> --- a/xen/arch/x86/mm/shadow/common.c Wed Oct 10 11:10:36 2007 -0400
>> +++ b/xen/arch/x86/mm/shadow/common.c Wed Oct 10 12:50:46 2007 -0400
>> @@ -36,6 +36,7 @@
>> #include <asm/current.h>
>> #include <asm/flushtlb.h>
>> #include <asm/shadow.h>
>> +#include <asm/paging.h>
>>
>
> Inside shadow code, it's best to use the shadow_* versions of things.
> The paging_* ones will just check for being in shadow mode, which we
> know is true.
>
>
>> #include "private.h"
>>
>>
>> @@ -2725,17 +2726,18 @@ shadow_write_p2m_entry(struct vcpu *v, u
>> safe_write_pte(p, new);
>>
>> /* install P2M in monitors for PAE Xen */
>> -#if CONFIG_PAGING_LEVELS == 3
>> +#if CONFIG_PAGING_LEVELS >= 3
>> if ( level == 3 ) {
>> struct vcpu *v;
>> +#if CONFIG_PAGING_LEVELS == 3
>> /* We have written to the p2m l3: need to sync the per-vcpu
>> * copies of it in the monitor tables */
>> p2m_install_entry_in_monitors(d, (l3_pgentry_t *)p);
>> +#endif
>> /* Also, any vcpus running on shadows of the p2m need to
>> * reload their CR3s so the change propagates to the shadow */
>> for_each_vcpu(d, v) {
>> - if ( pagetable_get_pfn(v->arch.guest_table)
>> - == pagetable_get_pfn(d->arch.phys_table)
>> + if ( likely(!paging_mode_translate(d))
>>
>
> This test will never be true; if you aren't in paging_mode_translate()
> you won't be writing p2m entries in the first place.
>
> That said, I think it's probably right to just get rid of the call
> entirely, since we don't shadow the p2m any more.
>
> Cheers,
>
> Tim.
>
>
[-- Attachment #1.2: Type: text/html, Size: 2979 bytes --]
[-- Attachment #2: xen-amd-vista-screen-clear.patch --]
[-- Type: text/x-patch, Size: 1174 bytes --]
diff -r 16bf26cdf06b xen/arch/x86/mm/shadow/common.c
--- a/xen/arch/x86/mm/shadow/common.c Tue Jul 24 16:49:50 2007 -0400
+++ b/xen/arch/x86/mm/shadow/common.c Tue Jul 24 16:49:53 2007 -0400
@@ -2891,17 +2891,18 @@ shadow_write_p2m_entry(struct vcpu *v, u
(void)sh_validate_guest_entry(d->vcpu[0], table_mfn, p, sizeof(*p));
/* install P2M in monitors for PAE Xen */
-#if CONFIG_PAGING_LEVELS == 3
+#if CONFIG_PAGING_LEVELS >= 3
if ( level == 3 ) {
struct vcpu *v;
+#if CONFIG_PAGING_LEVELS == 3
/* We have written to the p2m l3: need to sync the per-vcpu
* copies of it in the monitor tables */
p2m_install_entry_in_monitors(d, (l3_pgentry_t *)p);
+#endif
/* Also, any vcpus running on shadows of the p2m need to
* reload their CR3s so the change propagates to the shadow */
for_each_vcpu(d, v) {
- if ( pagetable_get_pfn(v->arch.guest_table)
- == pagetable_get_pfn(d->arch.phys_table)
+ if ( ! v->arch.paging.translate_enabled
&& v->arch.paging.mode != NULL )
v->arch.paging.mode->update_cr3(v, 0);
}
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next prev parent reply other threads:[~2007-10-25 11:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-24 21:07 [PATCH] Fix Vista screen clear on AMD Ben Guthro
2007-10-25 9:16 ` Tim Deegan
2007-10-25 11:25 ` Ben Guthro [this message]
2007-10-25 11:34 ` Tim Deegan
2007-10-25 14:13 ` Gary Grebus
2007-10-25 14:32 ` Tim Deegan
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=47207D2E.8070209@virtualiron.com \
--to=bguthro@virtualiron.com \
--cc=Tim.Deegan@xensource.com \
--cc=ggrebus@virtualiron.com \
--cc=xen-devel@lists.xensource.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.