On Sat, Jun 2, 2012 at 12:08 PM, Joanna Rutkowska
<
joa...@invisiblethingslab.com> wrote:
> On 05/22/12 13:13, Radoslaw Szkodzinski wrote:
>> Hello,
>> I'm back with some new (and old?) issues in Qubes:
>>
>> 1) Kernel 3.3.5 has a horrible performance regression, probably in the
>> Intel driver (i935, HD 3000).
>> It cuts performance noticeably with large windows and graphics. 3.2.7 is fine.
>
> So, have you found out which commit (between 3.2.7 and 3.3.5) causes the
> GPU slow down (by bisectioning)? It would be very helpful...
>
Yes, I found it... and I'm scared by what this commit does.
Who reviewed this, if anyone at all - this is #if 0 for crying out
loud, not to mention with a previous proper, but not as fast as
everyone would like, fix.
I wonder why nobody using InfiniBand noticed it - I bet they use old
kernels in the datacenters...
(and yes, Xen on desktop is not exactly widespread)
Should've been made into an actual toggle for starters (wait, there's
nopat already) - and properly fixed.
It actually has been fixed - the "wall" (3 nops in the hot path) on A8
is trivial compared to missing caching on all high mappings and what's
more, broken flag reads.
This makes MTRR allocations fail here with horrible results for
performance all around.
Other horrible things will also happen if a high page is already
mapped WB and you return it as WC...
commit 8eaffa67b43e99ae581622c5133e20b0f48bcef1
Author: Konrad Rzeszutek Wilk <
konra...@oracle.com>
Date: Fri Feb 10 09:16:27 2012 -0500
xen/pat: Disable PAT support for now.
[Pls also look at
https://lkml.org/lkml/2012/2/10/228]
Using of PAT to change pages from WB to WC works quite nicely.
Changing it back to WB - not so much. The crux of the matter is
that the code that does this (__page_change_att_set_clr) has only
limited information so when it tries to the change it gets
the "raw" unfiltered information instead of the properly filtered one -
and the "raw" one tell it that PSE bit is on (while infact it
is not). As a result when the PTE is set to be WB from WC, we get
tons of:
--
Except it does work here. No BUG()s, no WARNING()s. I suspect the
problems when changing attributes arose from nasty overlapping
mappings.
Might be that this also messes up PCI passthrough and might be the
reason why the passed Radeon 7950 here only works once (in a system
boot) in the new kernels.
I know that the Linux driver attempts lots of PFN remappings - if this
goes via dom0 in any way while it's passed through, they will be
messed up if they're high.
(the guest is Windows)
--
Radosław Szkodziński