2013-08-02 15:37:58

by Johannes Weiner

[permalink] [raw]
Subject: [patch v2 0/3] mm: improve page aging fairness between zones/nodes

Changes in version 2:
o remove per-cpu counter inaccuracy noise from Changelog of kswapd
NUMA fix (Andrew)
o make fairness allocator work correctly with zone_reclaim_mode
enabled (Andrea)
o make allocation batch accounting non-atomic (Andrea)

The way the page allocator interacts with kswapd creates aging
imbalances, where the amount of time a userspace page gets in memory
under reclaim pressure is dependent on which zone, which node the
allocator took the page frame from.

#1 fixes missed kswapd wakeups on NUMA systems, which lead to some
nodes falling behind for a full reclaim cycle relative to the other
nodes in the system

#3 fixes an interaction where kswapd and a continuous stream of page
allocations keep the preferred zone of a task between the high and
low watermark (allocations succeed + kswapd does not go to sleep)
indefinitely, completely underutilizing the lower zones and
thrashing on the preferred zone

The following test ran a foreground workload (memcachetest) with
background IO of various sizes on a 4 node 8G system (similar results
were observed with single-node 4G systems):

parallelio
BASE FAIRALLOC
Ops memcachetest-0M 5170.00 ( 0.00%) 5283.00 ( 2.19%)
Ops memcachetest-791M 4740.00 ( 0.00%) 5293.00 ( 11.67%)
Ops memcachetest-2639M 2551.00 ( 0.00%) 4950.00 ( 94.04%)
Ops memcachetest-4487M 2606.00 ( 0.00%) 3922.00 ( 50.50%)
Ops io-duration-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
Ops io-duration-791M 55.00 ( 0.00%) 18.00 ( 67.27%)
Ops io-duration-2639M 235.00 ( 0.00%) 103.00 ( 56.17%)
Ops io-duration-4487M 278.00 ( 0.00%) 173.00 ( 37.77%)
Ops swaptotal-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
Ops swaptotal-791M 245184.00 ( 0.00%) 0.00 ( 0.00%)
Ops swaptotal-2639M 468069.00 ( 0.00%) 108778.00 ( 76.76%)
Ops swaptotal-4487M 452529.00 ( 0.00%) 76623.00 ( 83.07%)
Ops swapin-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
Ops swapin-791M 108297.00 ( 0.00%) 0.00 ( 0.00%)
Ops swapin-2639M 169537.00 ( 0.00%) 50031.00 ( 70.49%)
Ops swapin-4487M 167435.00 ( 0.00%) 34178.00 ( 79.59%)
Ops minorfaults-0M 1518666.00 ( 0.00%) 1503993.00 ( 0.97%)
Ops minorfaults-791M 1676963.00 ( 0.00%) 1520115.00 ( 9.35%)
Ops minorfaults-2639M 1606035.00 ( 0.00%) 1799717.00 (-12.06%)
Ops minorfaults-4487M 1612118.00 ( 0.00%) 1583825.00 ( 1.76%)
Ops majorfaults-0M 6.00 ( 0.00%) 0.00 ( 0.00%)
Ops majorfaults-791M 13836.00 ( 0.00%) 10.00 ( 99.93%)
Ops majorfaults-2639M 22307.00 ( 0.00%) 6490.00 ( 70.91%)
Ops majorfaults-4487M 21631.00 ( 0.00%) 4380.00 ( 79.75%)

Positive percentage means improvement, negative regression.

BASE FAIRALLOC
User 287.78 460.97
System 2151.67 3142.51
Elapsed 9737.00 8879.34

Memcachetest, the foreground workload, runs for a fixed duration,
which is why user and system time increased so much: memcachetest
spends more time doing actual work and less time waiting for IO.

The elapsed time came down because the background IO on the other hand
is fixed in size and throughput increased.

BASE FAIRALLOC
Minor Faults 53721925 57188551
Major Faults 392195 15157
Swap Ins 2994854 112770
Swap Outs 4907092 134982
Direct pages scanned 0 41824
Kswapd pages scanned 32975063 8128269
Kswapd pages reclaimed 6323069 7093495
Direct pages reclaimed 0 41824
Kswapd efficiency 19% 87%
Kswapd velocity 3386.573 915.414
Direct efficiency 100% 100%
Direct velocity 0.000 4.710
Percentage direct scans 0% 0%
Zone normal velocity 2011.338 550.661
Zone dma32 velocity 1365.623 369.221
Zone dma velocity 9.612 0.242
Page writes by reclaim 18732404.000 614807.000
Page writes file 13825312 479825
Page writes anon 4907092 134982
Page reclaim immediate 85490 5647
Sector Reads 12080532 483244
Sector Writes 88740508 65438876
Page rescued immediate 0 0
Slabs scanned 82560 12160
Direct inode steals 0 0
Kswapd inode steals 24401 40013
Kswapd skipped wait 0 0
THP fault alloc 6 8
THP collapse alloc 5481 5812
THP splits 75 22
THP fault fallback 0 0
THP collapse fail 0 0
Compaction stalls 0 54
Compaction success 0 45
Compaction failures 0 9
Page migrate success 881492 82278
Page migrate failure 0 0
Compaction pages isolated 0 60334
Compaction migrate scanned 0 53505
Compaction free scanned 0 1537605
Compaction cost 914 86
NUMA PTE updates 46738231 41988419
NUMA hint faults 31175564 24213387
NUMA hint local faults 10427393 6411593
NUMA pages migrated 881492 55344
AutoNUMA cost 156221 121361

The overall runtime was reduced, throughput for both the foreground
workload as well as the background IO improved, major faults, swapping
and reclaim activity shrunk significantly, reclaim efficiency more
than quadrupled.

include/linux/mmzone.h | 1 +
mm/page_alloc.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
mm/vmscan.c | 2 +-
3 files changed, 69 insertions(+), 19 deletions(-)


2013-08-02 15:37:55

by Johannes Weiner

[permalink] [raw]
Subject: [patch v2 2/3] mm: page_alloc: rearrange watermark checking in get_page_from_freelist

Allocations that do not have to respect the watermarks are rare
high-priority events. Reorder the code such that per-zone dirty
limits and future checks important only to regular page allocations
are ignored in these extraordinary situations.

Signed-off-by: Johannes Weiner <[email protected]>
Reviewed-by: Rik van Riel <[email protected]>
---
mm/page_alloc.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index bf9d7c1..3b27d3e 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1889,12 +1889,17 @@ zonelist_scan:
*/
for_each_zone_zonelist_nodemask(zone, z, zonelist,
high_zoneidx, nodemask) {
+ unsigned long mark;
+
if (IS_ENABLED(CONFIG_NUMA) && zlc_active &&
!zlc_zone_worth_trying(zonelist, z, allowednodes))
continue;
if ((alloc_flags & ALLOC_CPUSET) &&
!cpuset_zone_allowed_softwall(zone, gfp_mask))
continue;
+ BUILD_BUG_ON(ALLOC_NO_WATERMARKS < NR_WMARK);
+ if (alloc_flags & ALLOC_NO_WATERMARKS)
+ goto try_this_zone;
/*
* When allocating a page cache page for writing, we
* want to get it from a zone that is within its dirty
@@ -1925,16 +1930,11 @@ zonelist_scan:
(gfp_mask & __GFP_WRITE) && !zone_dirty_ok(zone))
goto this_zone_full;

- BUILD_BUG_ON(ALLOC_NO_WATERMARKS < NR_WMARK);
- if (!(alloc_flags & ALLOC_NO_WATERMARKS)) {
- unsigned long mark;
+ mark = zone->watermark[alloc_flags & ALLOC_WMARK_MASK];
+ if (!zone_watermark_ok(zone, order, mark,
+ classzone_idx, alloc_flags)) {
int ret;

- mark = zone->watermark[alloc_flags & ALLOC_WMARK_MASK];
- if (zone_watermark_ok(zone, order, mark,
- classzone_idx, alloc_flags))
- goto try_this_zone;
-
if (IS_ENABLED(CONFIG_NUMA) &&
!did_zlc_setup && nr_online_nodes > 1) {
/*
--
1.8.3.2

2013-08-02 15:38:09

by Johannes Weiner

[permalink] [raw]
Subject: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Each zone that holds userspace pages of one workload must be aged at a
speed proportional to the zone size. Otherwise, the time an
individual page gets to stay in memory depends on the zone it happened
to be allocated in. Asymmetry in the zone aging creates rather
unpredictable aging behavior and results in the wrong pages being
reclaimed, activated etc.

But exactly this happens right now because of the way the page
allocator and kswapd interact. The page allocator uses per-node lists
of all zones in the system, ordered by preference, when allocating a
new page. When the first iteration does not yield any results, kswapd
is woken up and the allocator retries. Due to the way kswapd reclaims
zones below the high watermark while a zone can be allocated from when
it is above the low watermark, the allocator may keep kswapd running
while kswapd reclaim ensures that the page allocator can keep
allocating from the first zone in the zonelist for extended periods of
time. Meanwhile the other zones rarely see new allocations and thus
get aged much slower in comparison.

The result is that the occasional page placed in lower zones gets
relatively more time in memory, even gets promoted to the active list
after its peers have long been evicted. Meanwhile, the bulk of the
working set may be thrashing on the preferred zone even though there
may be significant amounts of memory available in the lower zones.

Even the most basic test -- repeatedly reading a file slightly bigger
than memory -- shows how broken the zone aging is. In this scenario,
no single page should be able stay in memory long enough to get
referenced twice and activated, but activation happens in spades:

$ grep active_file /proc/zoneinfo
nr_inactive_file 0
nr_active_file 0
nr_inactive_file 0
nr_active_file 8
nr_inactive_file 1582
nr_active_file 11994
$ cat data data data data >/dev/null
$ grep active_file /proc/zoneinfo
nr_inactive_file 0
nr_active_file 70
nr_inactive_file 258753
nr_active_file 443214
nr_inactive_file 149793
nr_active_file 12021

Fix this with a very simple round robin allocator. Each zone is
allowed a batch of allocations that is proportional to the zone's
size, after which it is treated as full. The batch counters are reset
when all zones have been tried and the allocator enters the slowpath
and kicks off kswapd reclaim. Allocation and reclaim is now fairly
spread out to all available/allowable zones:

$ grep active_file /proc/zoneinfo
nr_inactive_file 0
nr_active_file 0
nr_inactive_file 174
nr_active_file 4865
nr_inactive_file 53
nr_active_file 860
$ cat data data data data >/dev/null
$ grep active_file /proc/zoneinfo
nr_inactive_file 0
nr_active_file 0
nr_inactive_file 666622
nr_active_file 4988
nr_inactive_file 190969
nr_active_file 937

When zone_reclaim_mode is enabled, allocations will now spread out to
all zones on the local node, not just the first preferred zone (which
on a 4G node might be a tiny Normal zone).

Signed-off-by: Johannes Weiner <[email protected]>
Tested-by: Zlatko Calusic <[email protected]>
---
include/linux/mmzone.h | 1 +
mm/page_alloc.c | 69 ++++++++++++++++++++++++++++++++++++++++++--------
2 files changed, 60 insertions(+), 10 deletions(-)

diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index af4a3b7..dcad2ab 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -352,6 +352,7 @@ struct zone {
* free areas of different sizes
*/
spinlock_t lock;
+ int alloc_batch;
int all_unreclaimable; /* All pages pinned */
#if defined CONFIG_COMPACTION || defined CONFIG_CMA
/* Set to true when the PG_migrate_skip bits should be cleared */
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 3b27d3e..b2cdfd0 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1817,6 +1817,11 @@ static void zlc_clear_zones_full(struct zonelist *zonelist)
bitmap_zero(zlc->fullzones, MAX_ZONES_PER_ZONELIST);
}

+static bool zone_local(struct zone *local_zone, struct zone *zone)
+{
+ return node_distance(local_zone->node, zone->node) == LOCAL_DISTANCE;
+}
+
static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
{
return node_isset(local_zone->node, zone->zone_pgdat->reclaim_nodes);
@@ -1854,6 +1859,11 @@ static void zlc_clear_zones_full(struct zonelist *zonelist)
{
}

+static bool zone_local(struct zone *local_zone, struct zone *zone)
+{
+ return true;
+}
+
static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
{
return true;
@@ -1901,6 +1911,26 @@ zonelist_scan:
if (alloc_flags & ALLOC_NO_WATERMARKS)
goto try_this_zone;
/*
+ * Distribute pages in proportion to the individual
+ * zone size to ensure fair page aging. The zone a
+ * page was allocated in should have no effect on the
+ * time the page has in memory before being reclaimed.
+ *
+ * When zone_reclaim_mode is enabled, try to stay in
+ * local zones in the fastpath. If that fails, the
+ * slowpath is entered, which will do another pass
+ * starting with the local zones, but ultimately fall
+ * back to remote zones that do not partake in the
+ * fairness round-robin cycle of this zonelist.
+ */
+ if (alloc_flags & ALLOC_WMARK_LOW) {
+ if (zone->alloc_batch <= 0)
+ continue;
+ if (zone_reclaim_mode &&
+ !zone_local(preferred_zone, zone))
+ continue;
+ }
+ /*
* When allocating a page cache page for writing, we
* want to get it from a zone that is within its dirty
* limit, such that no single zone holds more than its
@@ -2006,7 +2036,8 @@ this_zone_full:
goto zonelist_scan;
}

- if (page)
+ if (page) {
+ zone->alloc_batch -= 1U << order;
/*
* page->pfmemalloc is set when ALLOC_NO_WATERMARKS was
* necessary to allocate the page. The expectation is
@@ -2015,6 +2046,7 @@ this_zone_full:
* for !PFMEMALLOC purposes.
*/
page->pfmemalloc = !!(alloc_flags & ALLOC_NO_WATERMARKS);
+ }

return page;
}
@@ -2346,16 +2378,28 @@ __alloc_pages_high_priority(gfp_t gfp_mask, unsigned int order,
return page;
}

-static inline
-void wake_all_kswapd(unsigned int order, struct zonelist *zonelist,
- enum zone_type high_zoneidx,
- enum zone_type classzone_idx)
+static void prepare_slowpath(gfp_t gfp_mask, unsigned int order,
+ struct zonelist *zonelist,
+ enum zone_type high_zoneidx,
+ struct zone *preferred_zone)
{
struct zoneref *z;
struct zone *zone;

- for_each_zone_zonelist(zone, z, zonelist, high_zoneidx)
- wakeup_kswapd(zone, order, classzone_idx);
+ for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
+ if (!(gfp_mask & __GFP_NO_KSWAPD))
+ wakeup_kswapd(zone, order, zone_idx(preferred_zone));
+ /*
+ * Only reset the batches of zones that were actually
+ * considered in the fast path, we don't want to
+ * thrash fairness information for zones that are not
+ * actually part of this zonelist's round-robin cycle.
+ */
+ if (zone_reclaim_mode && !zone_local(preferred_zone, zone))
+ continue;
+ zone->alloc_batch = high_wmark_pages(zone) -
+ low_wmark_pages(zone);
+ }
}

static inline int
@@ -2451,9 +2495,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
goto nopage;

restart:
- if (!(gfp_mask & __GFP_NO_KSWAPD))
- wake_all_kswapd(order, zonelist, high_zoneidx,
- zone_idx(preferred_zone));
+ prepare_slowpath(gfp_mask, order, zonelist,
+ high_zoneidx, preferred_zone);

/*
* OK, we're below the kswapd watermark and have kicked background
@@ -4754,6 +4797,9 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
zone_seqlock_init(zone);
zone->zone_pgdat = pgdat;

+ /* For bootup, initialized properly in watermark setup */
+ zone->alloc_batch = zone->managed_pages;
+
zone_pcp_init(zone);
lruvec_init(&zone->lruvec);
if (!size)
@@ -5525,6 +5571,9 @@ static void __setup_per_zone_wmarks(void)
zone->watermark[WMARK_LOW] = min_wmark_pages(zone) + (tmp >> 2);
zone->watermark[WMARK_HIGH] = min_wmark_pages(zone) + (tmp >> 1);

+ zone->alloc_batch = high_wmark_pages(zone) -
+ low_wmark_pages(zone);
+
setup_zone_migrate_reserve(zone);
spin_unlock_irqrestore(&zone->lock, flags);
}
--
1.8.3.2

2013-08-02 15:38:54

by Johannes Weiner

[permalink] [raw]
Subject: [patch v2 1/3] mm: vmscan: fix numa reclaim balance problem in kswapd

When the page allocator fails to get a page from all zones in its
given zonelist, it wakes up the per-node kswapds for all zones that
are at their low watermark.

However, with a system under load the free pages in a zone can
fluctuate enough that the allocation fails but the kswapd wakeup is
also skipped while the zone is still really close to the low
watermark.

When one node misses a wakeup like this, it won't be aged before all
the other node's zones are down to their low watermarks again. And
skipping a full aging cycle is an obvious fairness problem.

Kswapd runs until the high watermarks are restored, so it should also
be woken when the high watermarks are not met. This ages nodes more
equally and creates a safety margin for the page counter fluctuation.

By using zone_balanced(), it will now check, in addition to the
watermark, if compaction requires more order-0 pages to create a
higher order page.

Signed-off-by: Johannes Weiner <[email protected]>
Reviewed-by: Rik van Riel <[email protected]>
---
mm/vmscan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 2cff0d4..758540d 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -3237,7 +3237,7 @@ void wakeup_kswapd(struct zone *zone, int order, enum zone_type classzone_idx)
}
if (!waitqueue_active(&pgdat->kswapd_wait))
return;
- if (zone_watermark_ok_safe(zone, order, low_wmark_pages(zone), 0, 0))
+ if (zone_balanced(zone, order, 0, 0))
return;

trace_mm_vmscan_wakeup_kswapd(pgdat->node_id, zone_idx(zone), order);
--
1.8.3.2

2013-08-02 18:12:23

by Rik van Riel

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On 08/02/2013 11:37 AM, Johannes Weiner wrote:
> Each zone that holds userspace pages of one workload must be aged at a
> speed proportional to the zone size. Otherwise, the time an
> individual page gets to stay in memory depends on the zone it happened
> to be allocated in. Asymmetry in the zone aging creates rather
> unpredictable aging behavior and results in the wrong pages being
> reclaimed, activated etc.


> When zone_reclaim_mode is enabled, allocations will now spread out to
> all zones on the local node, not just the first preferred zone (which
> on a 4G node might be a tiny Normal zone).
>
> Signed-off-by: Johannes Weiner <[email protected]>
> Tested-by: Zlatko Calusic <[email protected]>

Reviewed-by: Rik van Riel <[email protected]>


--
All rights reversed.

2013-08-02 20:31:32

by Andrea Arcangeli

[permalink] [raw]
Subject: Re: [patch v2 0/3] mm: improve page aging fairness between zones/nodes

On Fri, Aug 02, 2013 at 11:37:23AM -0400, Johannes Weiner wrote:
> Changes in version 2:

v2 looks great to me.

zone->alloc_batch -= 1U << order;
3147: d3 e0 shl %cl,%eax
3149: 29 42 54 sub %eax,0x54(%rdx)

gcc builds it as one asm insn too.

Considering we depend on gcc to be optimal and to update ptes in a
single insn (and if it doesn't we'll corrupt memory), keeping it in C
should always provide the update in a single insn.

I believe the error introduced when mulptiple CPUs of the same NUMA
node step on each other is going to be unmeasurable.

ACK the whole series.

Signed-off-by: Andrea Arcangeli <[email protected]>

Thanks,
Andrea

2013-08-05 01:15:12

by Minchan Kim

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hello Hannes,

On Fri, Aug 02, 2013 at 11:37:26AM -0400, Johannes Weiner wrote:
> Each zone that holds userspace pages of one workload must be aged at a
> speed proportional to the zone size. Otherwise, the time an
> individual page gets to stay in memory depends on the zone it happened
> to be allocated in. Asymmetry in the zone aging creates rather
> unpredictable aging behavior and results in the wrong pages being
> reclaimed, activated etc.
>
> But exactly this happens right now because of the way the page
> allocator and kswapd interact. The page allocator uses per-node lists
> of all zones in the system, ordered by preference, when allocating a
> new page. When the first iteration does not yield any results, kswapd
> is woken up and the allocator retries. Due to the way kswapd reclaims
> zones below the high watermark while a zone can be allocated from when
> it is above the low watermark, the allocator may keep kswapd running
> while kswapd reclaim ensures that the page allocator can keep
> allocating from the first zone in the zonelist for extended periods of
> time. Meanwhile the other zones rarely see new allocations and thus
> get aged much slower in comparison.
>
> The result is that the occasional page placed in lower zones gets
> relatively more time in memory, even gets promoted to the active list
> after its peers have long been evicted. Meanwhile, the bulk of the
> working set may be thrashing on the preferred zone even though there
> may be significant amounts of memory available in the lower zones.
>
> Even the most basic test -- repeatedly reading a file slightly bigger
> than memory -- shows how broken the zone aging is. In this scenario,
> no single page should be able stay in memory long enough to get
> referenced twice and activated, but activation happens in spades:
>
> $ grep active_file /proc/zoneinfo
> nr_inactive_file 0
> nr_active_file 0
> nr_inactive_file 0
> nr_active_file 8
> nr_inactive_file 1582
> nr_active_file 11994
> $ cat data data data data >/dev/null
> $ grep active_file /proc/zoneinfo
> nr_inactive_file 0
> nr_active_file 70
> nr_inactive_file 258753
> nr_active_file 443214
> nr_inactive_file 149793
> nr_active_file 12021
>
> Fix this with a very simple round robin allocator. Each zone is
> allowed a batch of allocations that is proportional to the zone's
> size, after which it is treated as full. The batch counters are reset
> when all zones have been tried and the allocator enters the slowpath
> and kicks off kswapd reclaim. Allocation and reclaim is now fairly
> spread out to all available/allowable zones:
>
> $ grep active_file /proc/zoneinfo
> nr_inactive_file 0
> nr_active_file 0
> nr_inactive_file 174
> nr_active_file 4865
> nr_inactive_file 53
> nr_active_file 860
> $ cat data data data data >/dev/null
> $ grep active_file /proc/zoneinfo
> nr_inactive_file 0
> nr_active_file 0
> nr_inactive_file 666622
> nr_active_file 4988
> nr_inactive_file 190969
> nr_active_file 937
>
> When zone_reclaim_mode is enabled, allocations will now spread out to
> all zones on the local node, not just the first preferred zone (which
> on a 4G node might be a tiny Normal zone).

I really want to give Reviewed-by but before that, I'd like to clear out
my concern which didn't handle enoughly in previous iteration.

Let's assume system has normal zone : 800M High zone : 800M
and there are two parallel workloads.

1. alloc_pages(GFP_KERNEL) : 800M
2. alloc_pages(GFP_MOVABLE) + mlocked : 800M

With old behavior, allocation from both workloads is fulfilled happily
because most of allocation from GFP_KERNEL would be done in normal zone
while most of allocation from GFP_MOVABLE would be done in high zone.
There is no OOM kill in this scenario.

With you change, normal zone would be fullfilled with GFP_KERNEL:400M
and GFP_MOVABLE:400M while high zone will have GFP_MOVABLE:400 + free 400M.
Then, someone would be OOM killed.

Of course, you can argue that if there is such workloads, he should make
sure it via lowmem_reseve but it's rather overkill if we consider more examples
because any movable pages couldn't be allocated from normal zone so memory
efficieny would be very bad.

As I said, I like your approach because I have no idea to handle unbalanced
aging problem better and we can get more benefits rather than lost by above
corner case but at least, I'd like to confirm what you think about
above problem before further steps. Maybe we can introduce "mlock with
newly-allocation or already-mapped page could be migrated to high memory zone"
when someone reported out? (we thougt mlocked page migration would be problem
RT latency POV but Peter confirmed it's no problem.)


>
> Signed-off-by: Johannes Weiner <[email protected]>
> Tested-by: Zlatko Calusic <[email protected]>
> ---
> include/linux/mmzone.h | 1 +
> mm/page_alloc.c | 69 ++++++++++++++++++++++++++++++++++++++++++--------
> 2 files changed, 60 insertions(+), 10 deletions(-)
>
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index af4a3b7..dcad2ab 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -352,6 +352,7 @@ struct zone {
> * free areas of different sizes
> */
> spinlock_t lock;
> + int alloc_batch;
> int all_unreclaimable; /* All pages pinned */
> #if defined CONFIG_COMPACTION || defined CONFIG_CMA
> /* Set to true when the PG_migrate_skip bits should be cleared */
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 3b27d3e..b2cdfd0 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -1817,6 +1817,11 @@ static void zlc_clear_zones_full(struct zonelist *zonelist)
> bitmap_zero(zlc->fullzones, MAX_ZONES_PER_ZONELIST);
> }
>
> +static bool zone_local(struct zone *local_zone, struct zone *zone)
> +{
> + return node_distance(local_zone->node, zone->node) == LOCAL_DISTANCE;
> +}
> +
> static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
> {
> return node_isset(local_zone->node, zone->zone_pgdat->reclaim_nodes);
> @@ -1854,6 +1859,11 @@ static void zlc_clear_zones_full(struct zonelist *zonelist)
> {
> }
>
> +static bool zone_local(struct zone *local_zone, struct zone *zone)
> +{
> + return true;
> +}
> +
> static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
> {
> return true;
> @@ -1901,6 +1911,26 @@ zonelist_scan:
> if (alloc_flags & ALLOC_NO_WATERMARKS)
> goto try_this_zone;
> /*
> + * Distribute pages in proportion to the individual
> + * zone size to ensure fair page aging. The zone a
> + * page was allocated in should have no effect on the
> + * time the page has in memory before being reclaimed.
> + *
> + * When zone_reclaim_mode is enabled, try to stay in
> + * local zones in the fastpath. If that fails, the
> + * slowpath is entered, which will do another pass
> + * starting with the local zones, but ultimately fall
> + * back to remote zones that do not partake in the
> + * fairness round-robin cycle of this zonelist.
> + */
> + if (alloc_flags & ALLOC_WMARK_LOW) {
> + if (zone->alloc_batch <= 0)
> + continue;
> + if (zone_reclaim_mode &&
> + !zone_local(preferred_zone, zone))
> + continue;
> + }
> + /*
> * When allocating a page cache page for writing, we
> * want to get it from a zone that is within its dirty
> * limit, such that no single zone holds more than its
> @@ -2006,7 +2036,8 @@ this_zone_full:
> goto zonelist_scan;
> }
>
> - if (page)
> + if (page) {
> + zone->alloc_batch -= 1U << order;
> /*
> * page->pfmemalloc is set when ALLOC_NO_WATERMARKS was
> * necessary to allocate the page. The expectation is
> @@ -2015,6 +2046,7 @@ this_zone_full:
> * for !PFMEMALLOC purposes.
> */
> page->pfmemalloc = !!(alloc_flags & ALLOC_NO_WATERMARKS);
> + }
>
> return page;
> }
> @@ -2346,16 +2378,28 @@ __alloc_pages_high_priority(gfp_t gfp_mask, unsigned int order,
> return page;
> }
>
> -static inline
> -void wake_all_kswapd(unsigned int order, struct zonelist *zonelist,
> - enum zone_type high_zoneidx,
> - enum zone_type classzone_idx)
> +static void prepare_slowpath(gfp_t gfp_mask, unsigned int order,
> + struct zonelist *zonelist,
> + enum zone_type high_zoneidx,
> + struct zone *preferred_zone)
> {
> struct zoneref *z;
> struct zone *zone;
>
> - for_each_zone_zonelist(zone, z, zonelist, high_zoneidx)
> - wakeup_kswapd(zone, order, classzone_idx);
> + for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
> + if (!(gfp_mask & __GFP_NO_KSWAPD))
> + wakeup_kswapd(zone, order, zone_idx(preferred_zone));
> + /*
> + * Only reset the batches of zones that were actually
> + * considered in the fast path, we don't want to
> + * thrash fairness information for zones that are not
> + * actually part of this zonelist's round-robin cycle.
> + */
> + if (zone_reclaim_mode && !zone_local(preferred_zone, zone))
> + continue;
> + zone->alloc_batch = high_wmark_pages(zone) -
> + low_wmark_pages(zone);
> + }
> }
>
> static inline int
> @@ -2451,9 +2495,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
> goto nopage;
>
> restart:
> - if (!(gfp_mask & __GFP_NO_KSWAPD))
> - wake_all_kswapd(order, zonelist, high_zoneidx,
> - zone_idx(preferred_zone));
> + prepare_slowpath(gfp_mask, order, zonelist,
> + high_zoneidx, preferred_zone);
>
> /*
> * OK, we're below the kswapd watermark and have kicked background
> @@ -4754,6 +4797,9 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
> zone_seqlock_init(zone);
> zone->zone_pgdat = pgdat;
>
> + /* For bootup, initialized properly in watermark setup */
> + zone->alloc_batch = zone->managed_pages;
> +
> zone_pcp_init(zone);
> lruvec_init(&zone->lruvec);
> if (!size)
> @@ -5525,6 +5571,9 @@ static void __setup_per_zone_wmarks(void)
> zone->watermark[WMARK_LOW] = min_wmark_pages(zone) + (tmp >> 2);
> zone->watermark[WMARK_HIGH] = min_wmark_pages(zone) + (tmp >> 1);
>
> + zone->alloc_batch = high_wmark_pages(zone) -
> + low_wmark_pages(zone);
> +
> setup_zone_migrate_reserve(zone);
> spin_unlock_irqrestore(&zone->lock, flags);
> }
> --
> 1.8.3.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

--
Kind regards,
Minchan Kim

2013-08-05 03:43:28

by Johannes Weiner

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Mon, Aug 05, 2013 at 10:15:46AM +0900, Minchan Kim wrote:
> Hello Hannes,
>
> On Fri, Aug 02, 2013 at 11:37:26AM -0400, Johannes Weiner wrote:
> > Each zone that holds userspace pages of one workload must be aged at a
> > speed proportional to the zone size. Otherwise, the time an
> > individual page gets to stay in memory depends on the zone it happened
> > to be allocated in. Asymmetry in the zone aging creates rather
> > unpredictable aging behavior and results in the wrong pages being
> > reclaimed, activated etc.
> >
> > But exactly this happens right now because of the way the page
> > allocator and kswapd interact. The page allocator uses per-node lists
> > of all zones in the system, ordered by preference, when allocating a
> > new page. When the first iteration does not yield any results, kswapd
> > is woken up and the allocator retries. Due to the way kswapd reclaims
> > zones below the high watermark while a zone can be allocated from when
> > it is above the low watermark, the allocator may keep kswapd running
> > while kswapd reclaim ensures that the page allocator can keep
> > allocating from the first zone in the zonelist for extended periods of
> > time. Meanwhile the other zones rarely see new allocations and thus
> > get aged much slower in comparison.
> >
> > The result is that the occasional page placed in lower zones gets
> > relatively more time in memory, even gets promoted to the active list
> > after its peers have long been evicted. Meanwhile, the bulk of the
> > working set may be thrashing on the preferred zone even though there
> > may be significant amounts of memory available in the lower zones.
> >
> > Even the most basic test -- repeatedly reading a file slightly bigger
> > than memory -- shows how broken the zone aging is. In this scenario,
> > no single page should be able stay in memory long enough to get
> > referenced twice and activated, but activation happens in spades:
> >
> > $ grep active_file /proc/zoneinfo
> > nr_inactive_file 0
> > nr_active_file 0
> > nr_inactive_file 0
> > nr_active_file 8
> > nr_inactive_file 1582
> > nr_active_file 11994
> > $ cat data data data data >/dev/null
> > $ grep active_file /proc/zoneinfo
> > nr_inactive_file 0
> > nr_active_file 70
> > nr_inactive_file 258753
> > nr_active_file 443214
> > nr_inactive_file 149793
> > nr_active_file 12021
> >
> > Fix this with a very simple round robin allocator. Each zone is
> > allowed a batch of allocations that is proportional to the zone's
> > size, after which it is treated as full. The batch counters are reset
> > when all zones have been tried and the allocator enters the slowpath
> > and kicks off kswapd reclaim. Allocation and reclaim is now fairly
> > spread out to all available/allowable zones:
> >
> > $ grep active_file /proc/zoneinfo
> > nr_inactive_file 0
> > nr_active_file 0
> > nr_inactive_file 174
> > nr_active_file 4865
> > nr_inactive_file 53
> > nr_active_file 860
> > $ cat data data data data >/dev/null
> > $ grep active_file /proc/zoneinfo
> > nr_inactive_file 0
> > nr_active_file 0
> > nr_inactive_file 666622
> > nr_active_file 4988
> > nr_inactive_file 190969
> > nr_active_file 937
> >
> > When zone_reclaim_mode is enabled, allocations will now spread out to
> > all zones on the local node, not just the first preferred zone (which
> > on a 4G node might be a tiny Normal zone).
>
> I really want to give Reviewed-by but before that, I'd like to clear out
> my concern which didn't handle enoughly in previous iteration.
>
> Let's assume system has normal zone : 800M High zone : 800M
> and there are two parallel workloads.
>
> 1. alloc_pages(GFP_KERNEL) : 800M
> 2. alloc_pages(GFP_MOVABLE) + mlocked : 800M
>
> With old behavior, allocation from both workloads is fulfilled happily
> because most of allocation from GFP_KERNEL would be done in normal zone
> while most of allocation from GFP_MOVABLE would be done in high zone.
> There is no OOM kill in this scenario.

If you have used ANY cache before, the movable pages will spill into
lowmem.

> With you change, normal zone would be fullfilled with GFP_KERNEL:400M
> and GFP_MOVABLE:400M while high zone will have GFP_MOVABLE:400 + free 400M.
> Then, someone would be OOM killed.
>
> Of course, you can argue that if there is such workloads, he should make
> sure it via lowmem_reseve but it's rather overkill if we consider more examples
> because any movable pages couldn't be allocated from normal zone so memory
> efficieny would be very bad.

That's exactly what lowmem reserves are for: protect low memory from
data that can sit in high memory, so that you have enough for data
that can only be in low memory.

If we find those reserves to be inadequate, we have to increase them.
You can't assume you get more lowmem than the lowmem reserves, period.

And while I don't mean to break highmem machines, I really can't find
it in my heart to care about theoretical performance variations in
highmem cornercases (which is already a redundancy).

> As I said, I like your approach because I have no idea to handle unbalanced
> aging problem better and we can get more benefits rather than lost by above
> corner case but at least, I'd like to confirm what you think about
> above problem before further steps. Maybe we can introduce "mlock with
> newly-allocation or already-mapped page could be migrated to high memory zone"
> when someone reported out? (we thougt mlocked page migration would be problem
> RT latency POV but Peter confirmed it's no problem.)

And you think increasing lowmem reserves would be overkill? ;-)

These patches fix real page aging problems. Making trade offs to work
properly on as many setups as possible is one thing, but a highmem
configuration where you need exactly 100% of lowmem and mlock 100% of
highmem?

Come on, Minchan...

2013-08-05 04:48:20

by Minchan Kim

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Sun, Aug 04, 2013 at 11:43:04PM -0400, Johannes Weiner wrote:
> On Mon, Aug 05, 2013 at 10:15:46AM +0900, Minchan Kim wrote:
> > Hello Hannes,
> >
> > On Fri, Aug 02, 2013 at 11:37:26AM -0400, Johannes Weiner wrote:
> > > Each zone that holds userspace pages of one workload must be aged at a
> > > speed proportional to the zone size. Otherwise, the time an
> > > individual page gets to stay in memory depends on the zone it happened
> > > to be allocated in. Asymmetry in the zone aging creates rather
> > > unpredictable aging behavior and results in the wrong pages being
> > > reclaimed, activated etc.
> > >
> > > But exactly this happens right now because of the way the page
> > > allocator and kswapd interact. The page allocator uses per-node lists
> > > of all zones in the system, ordered by preference, when allocating a
> > > new page. When the first iteration does not yield any results, kswapd
> > > is woken up and the allocator retries. Due to the way kswapd reclaims
> > > zones below the high watermark while a zone can be allocated from when
> > > it is above the low watermark, the allocator may keep kswapd running
> > > while kswapd reclaim ensures that the page allocator can keep
> > > allocating from the first zone in the zonelist for extended periods of
> > > time. Meanwhile the other zones rarely see new allocations and thus
> > > get aged much slower in comparison.
> > >
> > > The result is that the occasional page placed in lower zones gets
> > > relatively more time in memory, even gets promoted to the active list
> > > after its peers have long been evicted. Meanwhile, the bulk of the
> > > working set may be thrashing on the preferred zone even though there
> > > may be significant amounts of memory available in the lower zones.
> > >
> > > Even the most basic test -- repeatedly reading a file slightly bigger
> > > than memory -- shows how broken the zone aging is. In this scenario,
> > > no single page should be able stay in memory long enough to get
> > > referenced twice and activated, but activation happens in spades:
> > >
> > > $ grep active_file /proc/zoneinfo
> > > nr_inactive_file 0
> > > nr_active_file 0
> > > nr_inactive_file 0
> > > nr_active_file 8
> > > nr_inactive_file 1582
> > > nr_active_file 11994
> > > $ cat data data data data >/dev/null
> > > $ grep active_file /proc/zoneinfo
> > > nr_inactive_file 0
> > > nr_active_file 70
> > > nr_inactive_file 258753
> > > nr_active_file 443214
> > > nr_inactive_file 149793
> > > nr_active_file 12021
> > >
> > > Fix this with a very simple round robin allocator. Each zone is
> > > allowed a batch of allocations that is proportional to the zone's
> > > size, after which it is treated as full. The batch counters are reset
> > > when all zones have been tried and the allocator enters the slowpath
> > > and kicks off kswapd reclaim. Allocation and reclaim is now fairly
> > > spread out to all available/allowable zones:
> > >
> > > $ grep active_file /proc/zoneinfo
> > > nr_inactive_file 0
> > > nr_active_file 0
> > > nr_inactive_file 174
> > > nr_active_file 4865
> > > nr_inactive_file 53
> > > nr_active_file 860
> > > $ cat data data data data >/dev/null
> > > $ grep active_file /proc/zoneinfo
> > > nr_inactive_file 0
> > > nr_active_file 0
> > > nr_inactive_file 666622
> > > nr_active_file 4988
> > > nr_inactive_file 190969
> > > nr_active_file 937
> > >
> > > When zone_reclaim_mode is enabled, allocations will now spread out to
> > > all zones on the local node, not just the first preferred zone (which
> > > on a 4G node might be a tiny Normal zone).
> >
> > I really want to give Reviewed-by but before that, I'd like to clear out
> > my concern which didn't handle enoughly in previous iteration.
> >
> > Let's assume system has normal zone : 800M High zone : 800M
> > and there are two parallel workloads.
> >
> > 1. alloc_pages(GFP_KERNEL) : 800M
> > 2. alloc_pages(GFP_MOVABLE) + mlocked : 800M
> >
> > With old behavior, allocation from both workloads is fulfilled happily
> > because most of allocation from GFP_KERNEL would be done in normal zone
> > while most of allocation from GFP_MOVABLE would be done in high zone.
> > There is no OOM kill in this scenario.
>
> If you have used ANY cache before, the movable pages will spill into
> lowmem.

Indeed, my example was just depends on luck.
I just wanted to discuss such corner case issue to notice cons at least,
someone.

>
> > With you change, normal zone would be fullfilled with GFP_KERNEL:400M
> > and GFP_MOVABLE:400M while high zone will have GFP_MOVABLE:400 + free 400M.
> > Then, someone would be OOM killed.
> >
> > Of course, you can argue that if there is such workloads, he should make
> > sure it via lowmem_reseve but it's rather overkill if we consider more examples
> > because any movable pages couldn't be allocated from normal zone so memory
> > efficieny would be very bad.
>
> That's exactly what lowmem reserves are for: protect low memory from
> data that can sit in high memory, so that you have enough for data
> that can only be in low memory.
>
> If we find those reserves to be inadequate, we have to increase them.
> You can't assume you get more lowmem than the lowmem reserves, period.

Theoretically, true.

>
> And while I don't mean to break highmem machines, I really can't find
> it in my heart to care about theoretical performance variations in
> highmem cornercases (which is already a redundancy).

Yes. as I said, I don't know such workload, even embedded world.
But, recent mobile phone start to use 3G DRAM and maybe 2G would be a high
memory in 32bit machine. That's why I had a concern about this patch.
I think It's likely to pin lowmem more than old.

>
> > As I said, I like your approach because I have no idea to handle unbalanced
> > aging problem better and we can get more benefits rather than lost by above
> > corner case but at least, I'd like to confirm what you think about
> > above problem before further steps. Maybe we can introduce "mlock with
> > newly-allocation or already-mapped page could be migrated to high memory zone"
> > when someone reported out? (we thougt mlocked page migration would be problem
> > RT latency POV but Peter confirmed it's no problem.)
>
> And you think increasing lowmem reserves would be overkill? ;-)

If possible, I would like to avoid. ;-)

Peak workload : 800M average workload : 100M
int foo[800M] vs int *bar = malloc(800M);

>
> These patches fix real page aging problems. Making trade offs to work

Indeed!

> properly on as many setups as possible is one thing, but a highmem
> configuration where you need exactly 100% of lowmem and mlock 100% of
> highmem?

Nope. Apprently, I don't know.
I just wanted to record that we should already cover such claims
in review phase so that if such problem happens in future, we can answer
easily "Just rasise your lowmem reserve ratio because you have been
depends on the luck until now". And I don't want to argue with other mm
guys such solution in future again.

>
> Come on, Minchan...

I think as reviewer, it's enough as it is.

All three patches,

Reviewed-by: Minchan Kim <[email protected]>

>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to [email protected]. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

--
Kind regards,
Minchan Kim

2013-08-05 05:01:37

by Johannes Weiner

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Mon, Aug 05, 2013 at 01:48:58PM +0900, Minchan Kim wrote:
> On Sun, Aug 04, 2013 at 11:43:04PM -0400, Johannes Weiner wrote:
> > On Mon, Aug 05, 2013 at 10:15:46AM +0900, Minchan Kim wrote:
> > > I really want to give Reviewed-by but before that, I'd like to clear out
> > > my concern which didn't handle enoughly in previous iteration.
> > >
> > > Let's assume system has normal zone : 800M High zone : 800M
> > > and there are two parallel workloads.
> > >
> > > 1. alloc_pages(GFP_KERNEL) : 800M
> > > 2. alloc_pages(GFP_MOVABLE) + mlocked : 800M
> > >
> > > With old behavior, allocation from both workloads is fulfilled happily
> > > because most of allocation from GFP_KERNEL would be done in normal zone
> > > while most of allocation from GFP_MOVABLE would be done in high zone.
> > > There is no OOM kill in this scenario.
> >
> > If you have used ANY cache before, the movable pages will spill into
> > lowmem.
>
> Indeed, my example was just depends on luck.
> I just wanted to discuss such corner case issue to notice cons at least,
> someone.
>
> >
> > > With you change, normal zone would be fullfilled with GFP_KERNEL:400M
> > > and GFP_MOVABLE:400M while high zone will have GFP_MOVABLE:400 + free 400M.
> > > Then, someone would be OOM killed.
> > >
> > > Of course, you can argue that if there is such workloads, he should make
> > > sure it via lowmem_reseve but it's rather overkill if we consider more examples
> > > because any movable pages couldn't be allocated from normal zone so memory
> > > efficieny would be very bad.
> >
> > That's exactly what lowmem reserves are for: protect low memory from
> > data that can sit in high memory, so that you have enough for data
> > that can only be in low memory.
> >
> > If we find those reserves to be inadequate, we have to increase them.
> > You can't assume you get more lowmem than the lowmem reserves, period.
>
> Theoretically, true.
>
> >
> > And while I don't mean to break highmem machines, I really can't find
> > it in my heart to care about theoretical performance variations in
> > highmem cornercases (which is already a redundancy).
>
> Yes. as I said, I don't know such workload, even embedded world.
> But, recent mobile phone start to use 3G DRAM and maybe 2G would be a high
> memory in 32bit machine. That's why I had a concern about this patch.
> I think It's likely to pin lowmem more than old.
>
> > > As I said, I like your approach because I have no idea to handle unbalanced
> > > aging problem better and we can get more benefits rather than lost by above
> > > corner case but at least, I'd like to confirm what you think about
> > > above problem before further steps. Maybe we can introduce "mlock with
> > > newly-allocation or already-mapped page could be migrated to high memory zone"
> > > when someone reported out? (we thougt mlocked page migration would be problem
> > > RT latency POV but Peter confirmed it's no problem.)
> >
> > And you think increasing lowmem reserves would be overkill? ;-)
>
> If possible, I would like to avoid. ;-)
>
> Peak workload : 800M average workload : 100M
> int foo[800M] vs int *bar = malloc(800M);
>
> >
> > These patches fix real page aging problems. Making trade offs to work
>
> Indeed!
>
> > properly on as many setups as possible is one thing, but a highmem
> > configuration where you need exactly 100% of lowmem and mlock 100% of
> > highmem?
>
> Nope. Apprently, I don't know.
> I just wanted to record that we should already cover such claims
> in review phase so that if such problem happens in future, we can answer
> easily "Just rasise your lowmem reserve ratio because you have been
> depends on the luck until now". And I don't want to argue with other mm
> guys such solution in future again.

That's fair enough.

I would definitely suggest increasing the lowmem reserves in that case
but I don't expect anybody to actually rely on the exact placement on
a pristine system. Not for performance, much less for _correctness_.

> I think as reviewer, it's enough as it is.
>
> All three patches,
>
> Reviewed-by: Minchan Kim <[email protected]>

Thank you very much!

2013-08-05 11:35:16

by Andrea Arcangeli

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Mon, Aug 05, 2013 at 06:34:56PM +0800, Wanpeng Li wrote:
> Why round robin allocator don't consume ZONE_DMA?

I guess lowmem reserve reserves it all, 4GB/256(ratio)=16MB.

The only way to relax it would be 1) to account depending on memblock
types and allow only the movable ones to bypass the lowmem reserve and
prevent a change from movable type if lowmem reserve doesn't pass, 2)
use memory migration to move the movable pages from the lower zones to
the highest zone if reclaim fails if __GFP_DMA32 or __GFP_DMA is set,
or highmem is missing on 32bit kernels. The last point involving
memory migration would work similarly to compaction but it isn't black
and white, and it would cost CPU as well. The memory used by the
simple lowmem reserve mechanism is probably not significant enough to
warrant such an effort.

2013-08-07 14:16:02

by Mel Gorman

[permalink] [raw]
Subject: Re: [patch v2 1/3] mm: vmscan: fix numa reclaim balance problem in kswapd

On Fri, Aug 02, 2013 at 11:37:24AM -0400, Johannes Weiner wrote:
> When the page allocator fails to get a page from all zones in its
> given zonelist, it wakes up the per-node kswapds for all zones that
> are at their low watermark.
>
> However, with a system under load the free pages in a zone can
> fluctuate enough that the allocation fails but the kswapd wakeup is
> also skipped while the zone is still really close to the low
> watermark.
>
> When one node misses a wakeup like this, it won't be aged before all
> the other node's zones are down to their low watermarks again. And
> skipping a full aging cycle is an obvious fairness problem.
>
> Kswapd runs until the high watermarks are restored, so it should also
> be woken when the high watermarks are not met. This ages nodes more
> equally and creates a safety margin for the page counter fluctuation.
>
> By using zone_balanced(), it will now check, in addition to the
> watermark, if compaction requires more order-0 pages to create a
> higher order page.
>
> Signed-off-by: Johannes Weiner <[email protected]>
> Reviewed-by: Rik van Riel <[email protected]>

Acked-by: Mel Gorman <[email protected]>

--
Mel Gorman
SUSE Labs

2013-08-07 14:20:27

by Mel Gorman

[permalink] [raw]
Subject: Re: [patch v2 2/3] mm: page_alloc: rearrange watermark checking in get_page_from_freelist

On Fri, Aug 02, 2013 at 11:37:25AM -0400, Johannes Weiner wrote:
> Allocations that do not have to respect the watermarks are rare
> high-priority events. Reorder the code such that per-zone dirty
> limits and future checks important only to regular page allocations
> are ignored in these extraordinary situations.
>
> Signed-off-by: Johannes Weiner <[email protected]>
> Reviewed-by: Rik van Riel <[email protected]>

Acked-by: Mel Gorman <[email protected]>

--
Mel Gorman
SUSE Labs

2013-08-07 14:58:36

by Mel Gorman

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Fri, Aug 02, 2013 at 11:37:26AM -0400, Johannes Weiner wrote:
> Each zone that holds userspace pages of one workload must be aged at a
> speed proportional to the zone size. Otherwise, the time an
> individual page gets to stay in memory depends on the zone it happened
> to be allocated in. Asymmetry in the zone aging creates rather
> unpredictable aging behavior and results in the wrong pages being
> reclaimed, activated etc.
>
> But exactly this happens right now because of the way the page
> allocator and kswapd interact. The page allocator uses per-node lists
> of all zones in the system, ordered by preference, when allocating a
> new page. When the first iteration does not yield any results, kswapd
> is woken up and the allocator retries. Due to the way kswapd reclaims
> zones below the high watermark while a zone can be allocated from when
> it is above the low watermark, the allocator may keep kswapd running
> while kswapd reclaim ensures that the page allocator can keep
> allocating from the first zone in the zonelist for extended periods of
> time. Meanwhile the other zones rarely see new allocations and thus
> get aged much slower in comparison.
>
> The result is that the occasional page placed in lower zones gets
> relatively more time in memory, even gets promoted to the active list
> after its peers have long been evicted. Meanwhile, the bulk of the
> working set may be thrashing on the preferred zone even though there
> may be significant amounts of memory available in the lower zones.
>
> Even the most basic test -- repeatedly reading a file slightly bigger
> than memory -- shows how broken the zone aging is. In this scenario,
> no single page should be able stay in memory long enough to get
> referenced twice and activated, but activation happens in spades:
>
> $ grep active_file /proc/zoneinfo
> nr_inactive_file 0
> nr_active_file 0
> nr_inactive_file 0
> nr_active_file 8
> nr_inactive_file 1582
> nr_active_file 11994
> $ cat data data data data >/dev/null
> $ grep active_file /proc/zoneinfo
> nr_inactive_file 0
> nr_active_file 70
> nr_inactive_file 258753
> nr_active_file 443214
> nr_inactive_file 149793
> nr_active_file 12021
>
> Fix this with a very simple round robin allocator. Each zone is
> allowed a batch of allocations that is proportional to the zone's
> size, after which it is treated as full. The batch counters are reset
> when all zones have been tried and the allocator enters the slowpath
> and kicks off kswapd reclaim. Allocation and reclaim is now fairly
> spread out to all available/allowable zones:
>
> $ grep active_file /proc/zoneinfo
> nr_inactive_file 0
> nr_active_file 0
> nr_inactive_file 174
> nr_active_file 4865
> nr_inactive_file 53
> nr_active_file 860
> $ cat data data data data >/dev/null
> $ grep active_file /proc/zoneinfo
> nr_inactive_file 0
> nr_active_file 0
> nr_inactive_file 666622
> nr_active_file 4988
> nr_inactive_file 190969
> nr_active_file 937
>
> When zone_reclaim_mode is enabled, allocations will now spread out to
> all zones on the local node, not just the first preferred zone (which
> on a 4G node might be a tiny Normal zone).
>
> Signed-off-by: Johannes Weiner <[email protected]>
> Tested-by: Zlatko Calusic <[email protected]>
> ---
> include/linux/mmzone.h | 1 +
> mm/page_alloc.c | 69 ++++++++++++++++++++++++++++++++++++++++++--------
> 2 files changed, 60 insertions(+), 10 deletions(-)
>
> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> index af4a3b7..dcad2ab 100644
> --- a/include/linux/mmzone.h
> +++ b/include/linux/mmzone.h
> @@ -352,6 +352,7 @@ struct zone {
> * free areas of different sizes
> */
> spinlock_t lock;
> + int alloc_batch;
> int all_unreclaimable; /* All pages pinned */
> #if defined CONFIG_COMPACTION || defined CONFIG_CMA
> /* Set to true when the PG_migrate_skip bits should be cleared */

This adds a dirty cache line that is updated on every allocation even if
it's from the per-cpu allocator. I am concerned that this will introduce
noticable overhead in the allocator paths on large machines running
allocator intensive workloads.

Would it be possible to move it into the per-cpu pageset? I understand
that hte round-robin nature will then depend on what CPU is running and
the performance characterisics will be different. There might even be an
adverse workload that uses all the batches from all available CPUs until
it is essentially the same problem but that would be a very worst case.
I would hope that in general it would work without adding a big source of
dirty cache line bouncing in the middle of the allocator.

What I do not know offhand is how much space there is in that pageset
thing before it grows by another cache line.

I should note that the page allocator as it currently stands is not
great at avoiding dirtying cache lines. In the slow path in particular
it can suffer very badly when updating struct page. The per-cpu
allocator mitigates the problem a bit in most of the fast paths though.

> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 3b27d3e..b2cdfd0 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -1817,6 +1817,11 @@ static void zlc_clear_zones_full(struct zonelist *zonelist)
> bitmap_zero(zlc->fullzones, MAX_ZONES_PER_ZONELIST);
> }
>
> +static bool zone_local(struct zone *local_zone, struct zone *zone)
> +{
> + return node_distance(local_zone->node, zone->node) == LOCAL_DISTANCE;
> +}
> +
> static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
> {
> return node_isset(local_zone->node, zone->zone_pgdat->reclaim_nodes);
> @@ -1854,6 +1859,11 @@ static void zlc_clear_zones_full(struct zonelist *zonelist)
> {
> }
>
> +static bool zone_local(struct zone *local_zone, struct zone *zone)
> +{
> + return true;
> +}
> +
> static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
> {
> return true;
> @@ -1901,6 +1911,26 @@ zonelist_scan:
> if (alloc_flags & ALLOC_NO_WATERMARKS)
> goto try_this_zone;
> /*
> + * Distribute pages in proportion to the individual
> + * zone size to ensure fair page aging. The zone a
> + * page was allocated in should have no effect on the
> + * time the page has in memory before being reclaimed.
> + *
> + * When zone_reclaim_mode is enabled, try to stay in
> + * local zones in the fastpath. If that fails, the
> + * slowpath is entered, which will do another pass
> + * starting with the local zones, but ultimately fall
> + * back to remote zones that do not partake in the
> + * fairness round-robin cycle of this zonelist.
> + */
> + if (alloc_flags & ALLOC_WMARK_LOW) {
> + if (zone->alloc_batch <= 0)
> + continue;
> + if (zone_reclaim_mode &&
> + !zone_local(preferred_zone, zone))
> + continue;
> + }
> + /*
> * When allocating a page cache page for writing, we
> * want to get it from a zone that is within its dirty
> * limit, such that no single zone holds more than its
> @@ -2006,7 +2036,8 @@ this_zone_full:
> goto zonelist_scan;
> }
>
> - if (page)
> + if (page) {
> + zone->alloc_batch -= 1U << order;

This line is where I think there will be noticable increases in cache
misses when running parallel tests. PFT from mmtests on a large machine
might be able to show the problem.

> /*
> * page->pfmemalloc is set when ALLOC_NO_WATERMARKS was
> * necessary to allocate the page. The expectation is
> @@ -2015,6 +2046,7 @@ this_zone_full:
> * for !PFMEMALLOC purposes.
> */
> page->pfmemalloc = !!(alloc_flags & ALLOC_NO_WATERMARKS);
> + }
>
> return page;
> }
> @@ -2346,16 +2378,28 @@ __alloc_pages_high_priority(gfp_t gfp_mask, unsigned int order,
> return page;
> }
>
> -static inline
> -void wake_all_kswapd(unsigned int order, struct zonelist *zonelist,
> - enum zone_type high_zoneidx,
> - enum zone_type classzone_idx)
> +static void prepare_slowpath(gfp_t gfp_mask, unsigned int order,
> + struct zonelist *zonelist,
> + enum zone_type high_zoneidx,
> + struct zone *preferred_zone)
> {
> struct zoneref *z;
> struct zone *zone;
>
> - for_each_zone_zonelist(zone, z, zonelist, high_zoneidx)
> - wakeup_kswapd(zone, order, classzone_idx);
> + for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
> + if (!(gfp_mask & __GFP_NO_KSWAPD))
> + wakeup_kswapd(zone, order, zone_idx(preferred_zone));
> + /*
> + * Only reset the batches of zones that were actually
> + * considered in the fast path, we don't want to
> + * thrash fairness information for zones that are not
> + * actually part of this zonelist's round-robin cycle.
> + */
> + if (zone_reclaim_mode && !zone_local(preferred_zone, zone))
> + continue;
> + zone->alloc_batch = high_wmark_pages(zone) -
> + low_wmark_pages(zone);
> + }

We now call wakeup_kswapd() when the batches for the round-robin are
expired. In some circumstances this can be expensive in its own right if
it calls zone_watermark_ok_safe() from zone_balanced().

If we are entering the slowpath because the batches are expired should
the fast path reset the alloc_batches once and retry the fast path before
wakeup_kswapd?

> }
>
> static inline int
> @@ -2451,9 +2495,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
> goto nopage;
>
> restart:
> - if (!(gfp_mask & __GFP_NO_KSWAPD))
> - wake_all_kswapd(order, zonelist, high_zoneidx,
> - zone_idx(preferred_zone));
> + prepare_slowpath(gfp_mask, order, zonelist,
> + high_zoneidx, preferred_zone);
>
> /*
> * OK, we're below the kswapd watermark and have kicked background
> @@ -4754,6 +4797,9 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
> zone_seqlock_init(zone);
> zone->zone_pgdat = pgdat;
>
> + /* For bootup, initialized properly in watermark setup */
> + zone->alloc_batch = zone->managed_pages;
> +
> zone_pcp_init(zone);
> lruvec_init(&zone->lruvec);
> if (!size)
> @@ -5525,6 +5571,9 @@ static void __setup_per_zone_wmarks(void)
> zone->watermark[WMARK_LOW] = min_wmark_pages(zone) + (tmp >> 2);
> zone->watermark[WMARK_HIGH] = min_wmark_pages(zone) + (tmp >> 1);
>
> + zone->alloc_batch = high_wmark_pages(zone) -
> + low_wmark_pages(zone);
> +
> setup_zone_migrate_reserve(zone);
> spin_unlock_irqrestore(&zone->lock, flags);
> }
> --
> 1.8.3.2
>

--
Mel Gorman
SUSE Labs

2013-08-07 15:38:07

by Johannes Weiner

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Wed, Aug 07, 2013 at 03:58:28PM +0100, Mel Gorman wrote:
> On Fri, Aug 02, 2013 at 11:37:26AM -0400, Johannes Weiner wrote:
> > Each zone that holds userspace pages of one workload must be aged at a
> > speed proportional to the zone size. Otherwise, the time an
> > individual page gets to stay in memory depends on the zone it happened
> > to be allocated in. Asymmetry in the zone aging creates rather
> > unpredictable aging behavior and results in the wrong pages being
> > reclaimed, activated etc.
> >
> > But exactly this happens right now because of the way the page
> > allocator and kswapd interact. The page allocator uses per-node lists
> > of all zones in the system, ordered by preference, when allocating a
> > new page. When the first iteration does not yield any results, kswapd
> > is woken up and the allocator retries. Due to the way kswapd reclaims
> > zones below the high watermark while a zone can be allocated from when
> > it is above the low watermark, the allocator may keep kswapd running
> > while kswapd reclaim ensures that the page allocator can keep
> > allocating from the first zone in the zonelist for extended periods of
> > time. Meanwhile the other zones rarely see new allocations and thus
> > get aged much slower in comparison.
> >
> > The result is that the occasional page placed in lower zones gets
> > relatively more time in memory, even gets promoted to the active list
> > after its peers have long been evicted. Meanwhile, the bulk of the
> > working set may be thrashing on the preferred zone even though there
> > may be significant amounts of memory available in the lower zones.
> >
> > Even the most basic test -- repeatedly reading a file slightly bigger
> > than memory -- shows how broken the zone aging is. In this scenario,
> > no single page should be able stay in memory long enough to get
> > referenced twice and activated, but activation happens in spades:
> >
> > $ grep active_file /proc/zoneinfo
> > nr_inactive_file 0
> > nr_active_file 0
> > nr_inactive_file 0
> > nr_active_file 8
> > nr_inactive_file 1582
> > nr_active_file 11994
> > $ cat data data data data >/dev/null
> > $ grep active_file /proc/zoneinfo
> > nr_inactive_file 0
> > nr_active_file 70
> > nr_inactive_file 258753
> > nr_active_file 443214
> > nr_inactive_file 149793
> > nr_active_file 12021
> >
> > Fix this with a very simple round robin allocator. Each zone is
> > allowed a batch of allocations that is proportional to the zone's
> > size, after which it is treated as full. The batch counters are reset
> > when all zones have been tried and the allocator enters the slowpath
> > and kicks off kswapd reclaim. Allocation and reclaim is now fairly
> > spread out to all available/allowable zones:
> >
> > $ grep active_file /proc/zoneinfo
> > nr_inactive_file 0
> > nr_active_file 0
> > nr_inactive_file 174
> > nr_active_file 4865
> > nr_inactive_file 53
> > nr_active_file 860
> > $ cat data data data data >/dev/null
> > $ grep active_file /proc/zoneinfo
> > nr_inactive_file 0
> > nr_active_file 0
> > nr_inactive_file 666622
> > nr_active_file 4988
> > nr_inactive_file 190969
> > nr_active_file 937
> >
> > When zone_reclaim_mode is enabled, allocations will now spread out to
> > all zones on the local node, not just the first preferred zone (which
> > on a 4G node might be a tiny Normal zone).
> >
> > Signed-off-by: Johannes Weiner <[email protected]>
> > Tested-by: Zlatko Calusic <[email protected]>
> > ---
> > include/linux/mmzone.h | 1 +
> > mm/page_alloc.c | 69 ++++++++++++++++++++++++++++++++++++++++++--------
> > 2 files changed, 60 insertions(+), 10 deletions(-)
> >
> > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
> > index af4a3b7..dcad2ab 100644
> > --- a/include/linux/mmzone.h
> > +++ b/include/linux/mmzone.h
> > @@ -352,6 +352,7 @@ struct zone {
> > * free areas of different sizes
> > */
> > spinlock_t lock;
> > + int alloc_batch;
> > int all_unreclaimable; /* All pages pinned */
> > #if defined CONFIG_COMPACTION || defined CONFIG_CMA
> > /* Set to true when the PG_migrate_skip bits should be cleared */
>
> This adds a dirty cache line that is updated on every allocation even if
> it's from the per-cpu allocator. I am concerned that this will introduce
> noticable overhead in the allocator paths on large machines running
> allocator intensive workloads.
>
> Would it be possible to move it into the per-cpu pageset? I understand
> that hte round-robin nature will then depend on what CPU is running and
> the performance characterisics will be different. There might even be an
> adverse workload that uses all the batches from all available CPUs until
> it is essentially the same problem but that would be a very worst case.
> I would hope that in general it would work without adding a big source of
> dirty cache line bouncing in the middle of the allocator.

Rik made the same suggestion. The per-cpu error is one thing, the
problem is if the allocating task and kswapd run on the same CPU and
bypass the round-robin allocator completely, at which point we are
back to square one. We'd have to reduce the per-cpu lists from a pool
to strict batching of frees and allocs without reuse in between. That
might be doable, I'll give this another look.

> > @@ -2006,7 +2036,8 @@ this_zone_full:
> > goto zonelist_scan;
> > }
> >
> > - if (page)
> > + if (page) {
> > + zone->alloc_batch -= 1U << order;
>
> This line is where I think there will be noticable increases in cache
> misses when running parallel tests. PFT from mmtests on a large machine
> might be able to show the problem.

I tested this back then with the original atomic ops on a two socket
machine:

pft
BASE RRALLOC WORKINGSET
User 1 0.0235 ( 0.00%) 0.0275 (-17.02%) 0.0270 (-14.89%)
User 2 0.0275 ( 0.00%) 0.0275 ( -0.00%) 0.0285 ( -3.64%)
User 3 0.0330 ( 0.00%) 0.0365 (-10.61%) 0.0335 ( -1.52%)
User 4 0.0390 ( 0.00%) 0.0390 ( 0.00%) 0.0380 ( 2.56%)
System 1 0.2645 ( 0.00%) 0.2620 ( 0.95%) 0.2625 ( 0.76%)
System 2 0.3215 ( 0.00%) 0.3310 ( -2.95%) 0.3285 ( -2.18%)
System 3 0.3935 ( 0.00%) 0.4080 ( -3.68%) 0.4130 ( -4.96%)
System 4 0.4920 ( 0.00%) 0.5030 ( -2.24%) 0.5045 ( -2.54%)
Elapsed 1 0.2905 ( 0.00%) 0.2905 ( 0.00%) 0.2905 ( 0.00%)
Elapsed 2 0.1800 ( 0.00%) 0.1800 ( 0.00%) 0.1800 ( 0.00%)
Elapsed 3 0.1500 ( 0.00%) 0.1600 ( -6.67%) 0.1600 ( -6.67%)
Elapsed 4 0.1305 ( 0.00%) 0.1420 ( -8.81%) 0.1415 ( -8.43%)
Faults/cpu 1 667251.7997 ( 0.00%) 666296.4749 ( -0.14%) 667880.8099 ( 0.09%)
Faults/cpu 2 551464.0345 ( 0.00%) 536113.4630 ( -2.78%) 538286.2087 ( -2.39%)
Faults/cpu 3 452403.4425 ( 0.00%) 433856.5320 ( -4.10%) 432193.9888 ( -4.47%)
Faults/cpu 4 362691.4491 ( 0.00%) 356514.8821 ( -1.70%) 356436.5711 ( -1.72%)
Faults/sec 1 663612.5980 ( 0.00%) 662501.4959 ( -0.17%) 664037.3123 ( 0.06%)
Faults/sec 2 1096166.5317 ( 0.00%) 1064679.7154 ( -2.87%) 1068906.1040 ( -2.49%)
Faults/sec 3 1272925.4995 ( 0.00%) 1209241.9167 ( -5.00%) 1202868.9190 ( -5.50%)
Faults/sec 4 1437691.1054 ( 0.00%) 1362549.9877 ( -5.23%) 1381633.9889 ( -3.90%)

so a 2-5% regression in fault throughput on this machine. I would
love to avoid it, but I don't think it's a show stopper if it buys
500% improvements in tests like parallelio on the same machine.

> > @@ -2346,16 +2378,28 @@ __alloc_pages_high_priority(gfp_t gfp_mask, unsigned int order,
> > return page;
> > }
> >
> > -static inline
> > -void wake_all_kswapd(unsigned int order, struct zonelist *zonelist,
> > - enum zone_type high_zoneidx,
> > - enum zone_type classzone_idx)
> > +static void prepare_slowpath(gfp_t gfp_mask, unsigned int order,
> > + struct zonelist *zonelist,
> > + enum zone_type high_zoneidx,
> > + struct zone *preferred_zone)
> > {
> > struct zoneref *z;
> > struct zone *zone;
> >
> > - for_each_zone_zonelist(zone, z, zonelist, high_zoneidx)
> > - wakeup_kswapd(zone, order, classzone_idx);
> > + for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
> > + if (!(gfp_mask & __GFP_NO_KSWAPD))
> > + wakeup_kswapd(zone, order, zone_idx(preferred_zone));
> > + /*
> > + * Only reset the batches of zones that were actually
> > + * considered in the fast path, we don't want to
> > + * thrash fairness information for zones that are not
> > + * actually part of this zonelist's round-robin cycle.
> > + */
> > + if (zone_reclaim_mode && !zone_local(preferred_zone, zone))
> > + continue;
> > + zone->alloc_batch = high_wmark_pages(zone) -
> > + low_wmark_pages(zone);
> > + }
>
> We now call wakeup_kswapd() when the batches for the round-robin are
> expired. In some circumstances this can be expensive in its own right if
> it calls zone_watermark_ok_safe() from zone_balanced().
>
> If we are entering the slowpath because the batches are expired should
> the fast path reset the alloc_batches once and retry the fast path before
> wakeup_kswapd?

The batches are set up so that their expiration coincides with the
watermarks being hit. I haven't actually double checked it, but I'm
going to run some tests to see if the wakeups increased significantly.

Thanks for the input, Mel!

2013-08-08 04:16:54

by Johannes Weiner

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote:
> On Wed, Aug 07, 2013 at 03:58:28PM +0100, Mel Gorman wrote:
> > On Fri, Aug 02, 2013 at 11:37:26AM -0400, Johannes Weiner wrote:
> > > @@ -352,6 +352,7 @@ struct zone {
> > > * free areas of different sizes
> > > */
> > > spinlock_t lock;
> > > + int alloc_batch;
> > > int all_unreclaimable; /* All pages pinned */
> > > #if defined CONFIG_COMPACTION || defined CONFIG_CMA
> > > /* Set to true when the PG_migrate_skip bits should be cleared */
> >
> > This adds a dirty cache line that is updated on every allocation even if
> > it's from the per-cpu allocator. I am concerned that this will introduce
> > noticable overhead in the allocator paths on large machines running
> > allocator intensive workloads.
> >
> > Would it be possible to move it into the per-cpu pageset? I understand
> > that hte round-robin nature will then depend on what CPU is running and
> > the performance characterisics will be different. There might even be an
> > adverse workload that uses all the batches from all available CPUs until
> > it is essentially the same problem but that would be a very worst case.
> > I would hope that in general it would work without adding a big source of
> > dirty cache line bouncing in the middle of the allocator.
>
> Rik made the same suggestion. The per-cpu error is one thing, the
> problem is if the allocating task and kswapd run on the same CPU and
> bypass the round-robin allocator completely, at which point we are
> back to square one. We'd have to reduce the per-cpu lists from a pool
> to strict batching of frees and allocs without reuse in between. That
> might be doable, I'll give this another look.

I found a way. It's still in the fast path, but I'm using vmstat
percpu counters and can stick the update inside the same irq-safe
section that does the other statistic updates.

On a two socket system with a small Normal zone, the results are as
follows (unfair: mmotm without the fairness allocator, fairpcp: the
fair allocator + the vmstat optimization):

---

pft
mmotm mmotm
unfair fairpcp
User 1 0.0258 ( 0.00%) 0.0254 ( 1.40%)
User 2 0.0264 ( 0.00%) 0.0263 ( 0.21%)
User 3 0.0271 ( 0.00%) 0.0277 ( -2.36%)
User 4 0.0287 ( 0.00%) 0.0280 ( 2.33%)
System 1 0.4904 ( 0.00%) 0.4919 ( -0.29%)
System 2 0.6141 ( 0.00%) 0.6183 ( -0.68%)
System 3 0.7346 ( 0.00%) 0.7349 ( -0.04%)
System 4 0.8700 ( 0.00%) 0.8704 ( -0.05%)
Elapsed 1 0.5164 ( 0.00%) 0.5182 ( -0.35%)
Elapsed 2 0.3213 ( 0.00%) 0.3235 ( -0.67%)
Elapsed 3 0.2800 ( 0.00%) 0.2800 ( 0.00%)
Elapsed 4 0.2304 ( 0.00%) 0.2303 ( 0.01%)
Faults/cpu 1 392724.3239 ( 0.00%) 391558.5131 ( -0.30%)
Faults/cpu 2 319357.5074 ( 0.00%) 317577.8745 ( -0.56%)
Faults/cpu 3 265703.1420 ( 0.00%) 265668.3579 ( -0.01%)
Faults/cpu 4 225516.0058 ( 0.00%) 225474.1508 ( -0.02%)
Faults/sec 1 392051.3043 ( 0.00%) 390880.8201 ( -0.30%)
Faults/sec 2 635360.7045 ( 0.00%) 631819.1117 ( -0.56%)
Faults/sec 3 725535.2889 ( 0.00%) 725525.1280 ( -0.00%)
Faults/sec 4 883307.5047 ( 0.00%) 884026.1721 ( 0.08%)

The overhead appears to be negligible, if not noise.

mmotm mmotm
unfair fairpcp
User 39.90 39.70
System 1070.93 1069.50
Elapsed 557.47 556.86

mmotm mmotm
unfair fairpcp
Page Ins 1248 876
Page Outs 4280 4184
Swap Ins 0 0
Swap Outs 0 0
Alloc DMA 0 0
Alloc DMA32 13098002 214383756
Alloc Normal 279611269 78332806
Alloc Movable 0 0
Direct pages scanned 0 0
Kswapd pages scanned 0 0
Kswapd pages reclaimed 0 0
Direct pages reclaimed 0 0
Kswapd efficiency 100% 100%
Kswapd velocity 0.000 0.000
Direct efficiency 100% 100%
Direct velocity 0.000 0.000
Percentage direct scans 0% 0%
Page writes by reclaim 0 0
Page writes file 0 0
Page writes anon 0 0
Page reclaim immediate 0 0
Page rescued immediate 0 0
Slabs scanned 0 0
Direct inode steals 0 0
Kswapd inode steals 0 0
Kswapd skipped wait 0 0
THP fault alloc 0 0
THP collapse alloc 0 0
THP splits 0 0
THP fault fallback 0 0
THP collapse fail 0 0
Compaction stalls 0 0
Compaction success 0 0
Compaction failures 0 0
Page migrate success 0 0
Page migrate failure 0 0
Compaction pages isolated 0 0
Compaction migrate scanned 0 0
Compaction free scanned 0 0
Compaction cost 0 0
NUMA PTE updates 0 0
NUMA hint faults 0 0
NUMA hint local faults 0 0
NUMA pages migrated 0 0
AutoNUMA cost 0 0

The zone allocation stats show that 26% of the allocations come out of
the Normal zone and 73% out of the DMA32 zone, which is equivalent to
their proportional share of physical memory.

---

micro

mmotm mmotm
unfair fairpcp
User 650.11 533.86
System 46.16 31.49
Elapsed 903.53 349.29

mmotm mmotm
unfair fairpcp
Page Ins 27582876 11116604
Page Outs 33959012 16573856
Swap Ins 0 0
Swap Outs 0 0
Alloc DMA 0 0
Alloc DMA32 8709355 6046277
Alloc Normal 3188567 1959526
Alloc Movable 0 0
Direct pages scanned 2588172 549598
Kswapd pages scanned 14803621 8451319
Kswapd pages reclaimed 6845369 3671141
Direct pages reclaimed 559581 229586
Kswapd efficiency 46% 43%
Kswapd velocity 16384.205 24195.708
Direct efficiency 21% 41%
Direct velocity 2864.511 1573.472
Percentage direct scans 14% 6%
Page writes by reclaim 0 0
Page writes file 0 0
Page writes anon 0 0
Page reclaim immediate 1 0
Page rescued immediate 0 0
Slabs scanned 9088 7936
Direct inode steals 3910 0
Kswapd inode steals 15793 14
Kswapd skipped wait 0 0
THP fault alloc 6350 5482
THP collapse alloc 1 0
THP splits 0 0
THP fault fallback 164 1622
THP collapse fail 0 0
Compaction stalls 126 324
Compaction success 40 57
Compaction failures 86 267
Page migrate success 16633 96349
Page migrate failure 0 0
Compaction pages isolated 49154 305649
Compaction migrate scanned 92448 414357
Compaction free scanned 598137 4971412
Compaction cost 18 108
NUMA PTE updates 0 0
NUMA hint faults 0 0
NUMA hint local faults 0 0
NUMA pages migrated 0 0
AutoNUMA cost 0 0

Elapsed time in comparison with user and sys time indicates much
reduced IO wait.

Interestingly, the allocations end up spreading out even in the
unpatched case, but only because kswapd seems to get stuck frequently
in a small Normal zone full of young dirty pages.

---

parallelio
mmotm mmotm
unfair fairpcp
Ops memcachetest-0M 28012.00 ( 0.00%) 27887.00 ( -0.45%)
Ops memcachetest-1877M 22366.00 ( 0.00%) 27878.00 ( 24.64%)
Ops memcachetest-6257M 17770.00 ( 0.00%) 27610.00 ( 55.37%)
Ops memcachetest-10638M 17695.00 ( 0.00%) 27350.00 ( 54.56%)
Ops io-duration-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
Ops io-duration-1877M 42.00 ( 0.00%) 18.00 ( 57.14%)
Ops io-duration-6257M 97.00 ( 0.00%) 57.00 ( 41.24%)
Ops io-duration-10638M 172.00 ( 0.00%) 122.00 ( 29.07%)
Ops swaptotal-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
Ops swaptotal-1877M 93603.00 ( 0.00%) 0.00 ( 0.00%)
Ops swaptotal-6257M 113986.00 ( 0.00%) 0.00 ( 0.00%)
Ops swaptotal-10638M 178887.00 ( 0.00%) 0.00 ( 0.00%)
Ops swapin-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
Ops swapin-1877M 20710.00 ( 0.00%) 0.00 ( 0.00%)
Ops swapin-6257M 18803.00 ( 0.00%) 0.00 ( 0.00%)
Ops swapin-10638M 18755.00 ( 0.00%) 0.00 ( 0.00%)
Ops minorfaults-0M 866454.00 ( 0.00%) 844880.00 ( 2.49%)
Ops minorfaults-1877M 957107.00 ( 0.00%) 845839.00 ( 11.63%)
Ops minorfaults-6257M 971144.00 ( 0.00%) 844778.00 ( 13.01%)
Ops minorfaults-10638M 1066811.00 ( 0.00%) 843628.00 ( 20.92%)
Ops majorfaults-0M 17.00 ( 0.00%) 0.00 ( 0.00%)
Ops majorfaults-1877M 7636.00 ( 0.00%) 37.00 ( 99.52%)
Ops majorfaults-6257M 6487.00 ( 0.00%) 37.00 ( 99.43%)
Ops majorfaults-10638M 7337.00 ( 0.00%) 37.00 ( 99.50%)

Mmtests reporting seems to have a bug calculating the percentage when
the numbers drop to 0, see swap activity. Those should all be 100%.

mmotm mmotm
unfair fairpcp
User 592.67 695.15
System 3130.44 3628.81
Elapsed 7209.01 7206.46

mmotm mmotm
unfair fairpcp
Page Ins 1401120 42656
Page Outs 163980516 153864256
Swap Ins 316033 0
Swap Outs 2528278 0
Alloc DMA 0 0
Alloc DMA32 59139091 51707843
Alloc Normal 10013244 16310697
Alloc Movable 0 0
Direct pages scanned 210080 235649
Kswapd pages scanned 61960450 50130023
Kswapd pages reclaimed 34998767 35769908
Direct pages reclaimed 179655 173478
Kswapd efficiency 56% 71%
Kswapd velocity 8594.863 6956.262
Direct efficiency 85% 73%
Direct velocity 29.141 32.700
Percentage direct scans 0% 0%
Page writes by reclaim 3523501 1
Page writes file 995223 1
Page writes anon 2528278 0
Page reclaim immediate 2195 9188
Page rescued immediate 0 0
Slabs scanned 2048 1536
Direct inode steals 0 0
Kswapd inode steals 0 0
Kswapd skipped wait 0 0
THP fault alloc 3 3
THP collapse alloc 4958 3026
THP splits 28 27
THP fault fallback 0 0
THP collapse fail 7 72
Compaction stalls 65 32
Compaction success 57 14
Compaction failures 8 18
Page migrate success 39460 9899
Page migrate failure 0 0
Compaction pages isolated 87140 22017
Compaction migrate scanned 53494 12526
Compaction free scanned 913691 396861
Compaction cost 42 10
NUMA PTE updates 0 0
NUMA hint faults 0 0
NUMA hint local faults 0 0
NUMA pages migrated 0 0
AutoNUMA cost 0 0

---

Patch on top of mmotm:

---
From: Johannes Weiner <[email protected]>
Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching

Avoid dirtying the same cache line with every single page allocation
by making the fair per-zone allocation batch a vmstat item, which will
turn it into batched percpu counters on SMP.

Signed-off-by: Johannes Weiner <[email protected]>
---
include/linux/mmzone.h | 2 +-
mm/page_alloc.c | 21 ++++++++++++---------
mm/vmstat.c | 1 +
3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index dcad2ab..ac1ea79 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -105,6 +105,7 @@ struct zone_padding {
enum zone_stat_item {
/* First 128 byte cacheline (assuming 64 bit words) */
NR_FREE_PAGES,
+ NR_ALLOC_BATCH,
NR_LRU_BASE,
NR_INACTIVE_ANON = NR_LRU_BASE, /* must match order of LRU_[IN]ACTIVE */
NR_ACTIVE_ANON, /* " " " " " */
@@ -352,7 +353,6 @@ struct zone {
* free areas of different sizes
*/
spinlock_t lock;
- int alloc_batch;
int all_unreclaimable; /* All pages pinned */
#if defined CONFIG_COMPACTION || defined CONFIG_CMA
/* Set to true when the PG_migrate_skip bits should be cleared */
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 0d7e9e9..6a95d39 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1554,6 +1554,7 @@ again:
get_pageblock_migratetype(page));
}

+ __mod_zone_page_state(zone, NR_ALLOC_BATCH, -(1 << order));
__count_zone_vm_events(PGALLOC, zone, 1 << order);
zone_statistics(preferred_zone, zone, gfp_flags);
local_irq_restore(flags);
@@ -1927,7 +1928,7 @@ zonelist_scan:
* fairness round-robin cycle of this zonelist.
*/
if (alloc_flags & ALLOC_WMARK_LOW) {
- if (zone->alloc_batch <= 0)
+ if (zone_page_state(zone, NR_ALLOC_BATCH) <= 0)
continue;
if (zone_reclaim_mode &&
!zone_local(preferred_zone, zone))
@@ -2039,8 +2040,7 @@ this_zone_full:
goto zonelist_scan;
}

- if (page) {
- zone->alloc_batch -= 1U << order;
+ if (page)
/*
* page->pfmemalloc is set when ALLOC_NO_WATERMARKS was
* necessary to allocate the page. The expectation is
@@ -2049,7 +2049,6 @@ this_zone_full:
* for !PFMEMALLOC purposes.
*/
page->pfmemalloc = !!(alloc_flags & ALLOC_NO_WATERMARKS);
- }

return page;
}
@@ -2418,8 +2417,10 @@ static void prepare_slowpath(gfp_t gfp_mask, unsigned int order,
*/
if (zone_reclaim_mode && !zone_local(preferred_zone, zone))
continue;
- zone->alloc_batch = high_wmark_pages(zone) -
- low_wmark_pages(zone);
+ mod_zone_page_state(zone, NR_ALLOC_BATCH,
+ high_wmark_pages(zone) -
+ low_wmark_pages(zone) -
+ zone_page_state(zone, NR_ALLOC_BATCH));
}
}

@@ -4827,7 +4828,7 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
zone->zone_pgdat = pgdat;

/* For bootup, initialized properly in watermark setup */
- zone->alloc_batch = zone->managed_pages;
+ mod_zone_page_state(zone, NR_ALLOC_BATCH, zone->managed_pages);

zone_pcp_init(zone);
lruvec_init(&zone->lruvec);
@@ -5606,8 +5607,10 @@ static void __setup_per_zone_wmarks(void)
zone->watermark[WMARK_LOW] = min_wmark_pages(zone) + (tmp >> 2);
zone->watermark[WMARK_HIGH] = min_wmark_pages(zone) + (tmp >> 1);

- zone->alloc_batch = high_wmark_pages(zone) -
- low_wmark_pages(zone);
+ __mod_zone_page_state(zone, NR_ALLOC_BATCH,
+ high_wmark_pages(zone) -
+ low_wmark_pages(zone) -
+ zone_page_state(zone, NR_ALLOC_BATCH));

setup_zone_migrate_reserve(zone);
spin_unlock_irqrestore(&zone->lock, flags);
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 87228c5..ba9e46b 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -704,6 +704,7 @@ static void walk_zones_in_node(struct seq_file *m, pg_data_t *pgdat,
const char * const vmstat_text[] = {
/* Zoned VM counters */
"nr_free_pages",
+ "nr_alloc_batch",
"nr_inactive_anon",
"nr_active_anon",
"nr_inactive_file",
--
1.8.3.2

2013-08-08 09:21:20

by Mel Gorman

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Thu, Aug 08, 2013 at 12:16:23AM -0400, Johannes Weiner wrote:
> On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote:
> > On Wed, Aug 07, 2013 at 03:58:28PM +0100, Mel Gorman wrote:
> > > On Fri, Aug 02, 2013 at 11:37:26AM -0400, Johannes Weiner wrote:
> > > > @@ -352,6 +352,7 @@ struct zone {
> > > > * free areas of different sizes
> > > > */
> > > > spinlock_t lock;
> > > > + int alloc_batch;
> > > > int all_unreclaimable; /* All pages pinned */
> > > > #if defined CONFIG_COMPACTION || defined CONFIG_CMA
> > > > /* Set to true when the PG_migrate_skip bits should be cleared */
> > >
> > > This adds a dirty cache line that is updated on every allocation even if
> > > it's from the per-cpu allocator. I am concerned that this will introduce
> > > noticable overhead in the allocator paths on large machines running
> > > allocator intensive workloads.
> > >
> > > Would it be possible to move it into the per-cpu pageset? I understand
> > > that hte round-robin nature will then depend on what CPU is running and
> > > the performance characterisics will be different. There might even be an
> > > adverse workload that uses all the batches from all available CPUs until
> > > it is essentially the same problem but that would be a very worst case.
> > > I would hope that in general it would work without adding a big source of
> > > dirty cache line bouncing in the middle of the allocator.
> >
> > Rik made the same suggestion. The per-cpu error is one thing, the
> > problem is if the allocating task and kswapd run on the same CPU and
> > bypass the round-robin allocator completely, at which point we are
> > back to square one. We'd have to reduce the per-cpu lists from a pool
> > to strict batching of frees and allocs without reuse in between. That
> > might be doable, I'll give this another look.
>
> I found a way. It's still in the fast path, but I'm using vmstat
> percpu counters and can stick the update inside the same irq-safe
> section that does the other statistic updates.
>

Ok, there will be some drift as those counters are only updated
periodically or if they overflow. Offhand I think your worst case is
being off by (nr_cpu_in_node * 127 - default_batch) but I doubt it'll be
noticable.

> On a two socket system with a small Normal zone, the results are as
> follows (unfair: mmotm without the fairness allocator, fairpcp: the
> fair allocator + the vmstat optimization):
>
> ---
>
> pft
> mmotm mmotm
> unfair fairpcp
> User 1 0.0258 ( 0.00%) 0.0254 ( 1.40%)
> User 2 0.0264 ( 0.00%) 0.0263 ( 0.21%)
> User 3 0.0271 ( 0.00%) 0.0277 ( -2.36%)
> User 4 0.0287 ( 0.00%) 0.0280 ( 2.33%)
> System 1 0.4904 ( 0.00%) 0.4919 ( -0.29%)
> System 2 0.6141 ( 0.00%) 0.6183 ( -0.68%)
> System 3 0.7346 ( 0.00%) 0.7349 ( -0.04%)
> System 4 0.8700 ( 0.00%) 0.8704 ( -0.05%)
> Elapsed 1 0.5164 ( 0.00%) 0.5182 ( -0.35%)
> Elapsed 2 0.3213 ( 0.00%) 0.3235 ( -0.67%)
> Elapsed 3 0.2800 ( 0.00%) 0.2800 ( 0.00%)
> Elapsed 4 0.2304 ( 0.00%) 0.2303 ( 0.01%)
> Faults/cpu 1 392724.3239 ( 0.00%) 391558.5131 ( -0.30%)
> Faults/cpu 2 319357.5074 ( 0.00%) 317577.8745 ( -0.56%)
> Faults/cpu 3 265703.1420 ( 0.00%) 265668.3579 ( -0.01%)
> Faults/cpu 4 225516.0058 ( 0.00%) 225474.1508 ( -0.02%)
> Faults/sec 1 392051.3043 ( 0.00%) 390880.8201 ( -0.30%)
> Faults/sec 2 635360.7045 ( 0.00%) 631819.1117 ( -0.56%)
> Faults/sec 3 725535.2889 ( 0.00%) 725525.1280 ( -0.00%)
> Faults/sec 4 883307.5047 ( 0.00%) 884026.1721 ( 0.08%)
>
> The overhead appears to be negligible, if not noise.
>

Certainly small enough to not care considering what you're balancing
it against. Mind you, I do note that 4 clients is almost certainly not
enought to load a 2-socket machine. As the test is not memory intensive I
suspect that this test ran entirely within a single socket that would have
avoided the worst costs of dirty cache line bouncing anyway. As the number
of clients grow I predict that the results will become more variable as
it'll depend on scheduling.

> mmotm mmotm
> unfair fairpcp
> User 39.90 39.70
> System 1070.93 1069.50
> Elapsed 557.47 556.86
>

And there is nothing suspicious in the system CPU time.

> <SNIP
>
> parallelio
> mmotm mmotm
> unfair fairpcp
> Ops memcachetest-0M 28012.00 ( 0.00%) 27887.00 ( -0.45%)
> Ops memcachetest-1877M 22366.00 ( 0.00%) 27878.00 ( 24.64%)
> Ops memcachetest-6257M 17770.00 ( 0.00%) 27610.00 ( 55.37%)
> Ops memcachetest-10638M 17695.00 ( 0.00%) 27350.00 ( 54.56%)
> Ops io-duration-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
> Ops io-duration-1877M 42.00 ( 0.00%) 18.00 ( 57.14%)
> Ops io-duration-6257M 97.00 ( 0.00%) 57.00 ( 41.24%)
> Ops io-duration-10638M 172.00 ( 0.00%) 122.00 ( 29.07%)
> Ops swaptotal-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
> Ops swaptotal-1877M 93603.00 ( 0.00%) 0.00 ( 0.00%)
> Ops swaptotal-6257M 113986.00 ( 0.00%) 0.00 ( 0.00%)
> Ops swaptotal-10638M 178887.00 ( 0.00%) 0.00 ( 0.00%)
> Ops swapin-0M 0.00 ( 0.00%) 0.00 ( 0.00%)
> Ops swapin-1877M 20710.00 ( 0.00%) 0.00 ( 0.00%)
> Ops swapin-6257M 18803.00 ( 0.00%) 0.00 ( 0.00%)
> Ops swapin-10638M 18755.00 ( 0.00%) 0.00 ( 0.00%)
> Ops minorfaults-0M 866454.00 ( 0.00%) 844880.00 ( 2.49%)
> Ops minorfaults-1877M 957107.00 ( 0.00%) 845839.00 ( 11.63%)
> Ops minorfaults-6257M 971144.00 ( 0.00%) 844778.00 ( 13.01%)
> Ops minorfaults-10638M 1066811.00 ( 0.00%) 843628.00 ( 20.92%)
> Ops majorfaults-0M 17.00 ( 0.00%) 0.00 ( 0.00%)
> Ops majorfaults-1877M 7636.00 ( 0.00%) 37.00 ( 99.52%)
> Ops majorfaults-6257M 6487.00 ( 0.00%) 37.00 ( 99.43%)
> Ops majorfaults-10638M 7337.00 ( 0.00%) 37.00 ( 99.50%)
>
> Mmtests reporting seems to have a bug calculating the percentage when
> the numbers drop to 0, see swap activity. Those should all be 100%.
>

Yep. I added a note to the TODO list which is now going sideways on the
sheet. Really need to knock a few items off it.

Still, they key takeaway is that it's no longer swapping and with swapins
in particular that is a big deal. I think it's interesting to note that
major faults are also very different, higher than what can be accounted
for by just the swapping. I wonder if the shared libraries and executable
binaries also getting thrown out and paged back in.

> mmotm mmotm
> unfair fairpcp
> User 592.67 695.15
> System 3130.44 3628.81
> Elapsed 7209.01 7206.46
>

I'm not concerned about the high user time here because it's due to not
swapping (I guess). The higher system CPU is interesting and while I expect
it's just because the process is busy I must find the time to see *where*
that time is spent for this workload some day.

> mmotm mmotm
> unfair fairpcp
> Page Ins 1401120 42656
> Page Outs 163980516 153864256
> Swap Ins 316033 0
> Swap Outs 2528278 0
> Alloc DMA 0 0
> Alloc DMA32 59139091 51707843
> Alloc Normal 10013244 16310697
> Alloc Movable 0 0
> Direct pages scanned 210080 235649
> Kswapd pages scanned 61960450 50130023
> Kswapd pages reclaimed 34998767 35769908
> Direct pages reclaimed 179655 173478
> Kswapd efficiency 56% 71%
> Kswapd velocity 8594.863 6956.262
> Direct efficiency 85% 73%
> Direct velocity 29.141 32.700
> Percentage direct scans 0% 0%
> Page writes by reclaim 3523501 1
> Page writes file 995223 1
> Page writes anon 2528278 0
> Page reclaim immediate 2195 9188
> Page rescued immediate 0 0
> Slabs scanned 2048 1536
> Direct inode steals 0 0
> Kswapd inode steals 0 0
> Kswapd skipped wait 0 0
> THP fault alloc 3 3
> THP collapse alloc 4958 3026
> THP splits 28 27
> THP fault fallback 0 0
> THP collapse fail 7 72
> Compaction stalls 65 32
> Compaction success 57 14
> Compaction failures 8 18
> Page migrate success 39460 9899
> Page migrate failure 0 0
> Compaction pages isolated 87140 22017
> Compaction migrate scanned 53494 12526
> Compaction free scanned 913691 396861
> Compaction cost 42 10
> NUMA PTE updates 0 0
> NUMA hint faults 0 0
> NUMA hint local faults 0 0
> NUMA pages migrated 0 0
> AutoNUMA cost 0 0
>

btw, mmtests has another bug and that "Page Ins" and "Page Outs" figures
are completely bogus. They are replaced with simply Major and Minor
faults in my current git tree. Otherwise, note the decrease in kswapd
velocity. That's nice but nowhere near as nice as the elimination of page
writes from reclaim context!

> ---
>
> Patch on top of mmotm:
>
> ---
> From: Johannes Weiner <[email protected]>
> Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching
>
> Avoid dirtying the same cache line with every single page allocation
> by making the fair per-zone allocation batch a vmstat item, which will
> turn it into batched percpu counters on SMP.
>
> Signed-off-by: Johannes Weiner <[email protected]>

With this patch on top;

Acked-by: Mel Gorman <[email protected]>

Thanks very much Johannes, this is a great result. One note below

> @@ -2418,8 +2417,10 @@ static void prepare_slowpath(gfp_t gfp_mask, unsigned int order,
> */
> if (zone_reclaim_mode && !zone_local(preferred_zone, zone))
> continue;
> - zone->alloc_batch = high_wmark_pages(zone) -
> - low_wmark_pages(zone);
> + mod_zone_page_state(zone, NR_ALLOC_BATCH,
> + high_wmark_pages(zone) -
> + low_wmark_pages(zone) -
> + zone_page_state(zone, NR_ALLOC_BATCH));
> }
> }
>

Because of drift this is not exactly equivalent. The batch value will not
be reinitialised but instead adjusted by the delta but it's close enough
to not matter. Due to the size of the delta it will always spill over and
update the global counter so while the decrements from the alloc fast
paths are light, the reset is not. I see no way around this but if there
is still some noticable overhead then I bet this is where it is. It's
still a *LOT* better than what was there before and I think the cost is
justified this time.

--
Mel Gorman
SUSE Labs

2013-08-09 18:46:29

by Rik van Riel

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On 08/08/2013 12:16 AM, Johannes Weiner wrote:

> Patch on top of mmotm:

Yes, please!

> ---
> From: Johannes Weiner <[email protected]>
> Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching
>
> Avoid dirtying the same cache line with every single page allocation
> by making the fair per-zone allocation batch a vmstat item, which will
> turn it into batched percpu counters on SMP.
>
> Signed-off-by: Johannes Weiner <[email protected]>

Reviewed-by: Rik van Riel <[email protected]>

--
All rights reversed.

2013-08-16 22:18:53

by Kevin Hilman

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Johannes Weiner <[email protected]> writes:

> Hi Kevin,
>
> On Fri, Aug 16, 2013 at 10:17:01AM -0700, Kevin Hilman wrote:
>> Johannes Weiner <[email protected]> writes:
>> > On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote:
>> > Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching
>> >
>> > Avoid dirtying the same cache line with every single page allocation
>> > by making the fair per-zone allocation batch a vmstat item, which will
>> > turn it into batched percpu counters on SMP.
>> >
>> > Signed-off-by: Johannes Weiner <[email protected]>
>>
>> I bisected several boot failures on various ARM platform in
>> next-20130816 down to this patch (commit 67131f9837 in linux-next.)
>>
>> Simply reverting it got things booting again on top of -next. Example
>> boot crash below.
>
> Thanks for the bisect and report!

You're welcome. Thanks for the quick fix!

> I deref the percpu pointers before initializing them properly. It
> didn't trigger on x86 because the percpu offset added to the pointer
> is big enough so that it does not fall into PFN 0, but it probably
> ended up corrupting something...
>
> Could you try this patch on top of linux-next instead of the revert?

Yup, that change fixes it.

Tested-by: Kevin Hilman <[email protected]>

Kevin

2013-08-16 22:28:10

by Stephen Warren

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On 08/16/2013 02:18 PM, Johannes Weiner wrote:
> Hi Kevin,
>
> On Fri, Aug 16, 2013 at 10:17:01AM -0700, Kevin Hilman wrote:
>> Johannes Weiner <[email protected]> writes:
>>> On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote:
>>> Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching
>>>
>>> Avoid dirtying the same cache line with every single page allocation
>>> by making the fair per-zone allocation batch a vmstat item, which will
>>> turn it into batched percpu counters on SMP.
>>>
>>> Signed-off-by: Johannes Weiner <[email protected]>
>>
>> I bisected several boot failures on various ARM platform in
>> next-20130816 down to this patch (commit 67131f9837 in linux-next.)
>>
>> Simply reverting it got things booting again on top of -next. Example
>> boot crash below.
>
> Thanks for the bisect and report!
>
> I deref the percpu pointers before initializing them properly. It
> didn't trigger on x86 because the percpu offset added to the pointer
> is big enough so that it does not fall into PFN 0, but it probably
> ended up corrupting something...
>
> Could you try this patch on top of linux-next instead of the revert?

That patch,
Tested-by: Stephen Warren <[email protected]>

2013-08-17 00:04:03

by Johannes Weiner

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hi Kevin,

On Fri, Aug 16, 2013 at 10:17:01AM -0700, Kevin Hilman wrote:
> Johannes Weiner <[email protected]> writes:
> > On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote:
> > Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching
> >
> > Avoid dirtying the same cache line with every single page allocation
> > by making the fair per-zone allocation batch a vmstat item, which will
> > turn it into batched percpu counters on SMP.
> >
> > Signed-off-by: Johannes Weiner <[email protected]>
>
> I bisected several boot failures on various ARM platform in
> next-20130816 down to this patch (commit 67131f9837 in linux-next.)
>
> Simply reverting it got things booting again on top of -next. Example
> boot crash below.

Thanks for the bisect and report!

I deref the percpu pointers before initializing them properly. It
didn't trigger on x86 because the percpu offset added to the pointer
is big enough so that it does not fall into PFN 0, but it probably
ended up corrupting something...

Could you try this patch on top of linux-next instead of the revert?

Thanks,
Johannes

---
From: Johannes Weiner <[email protected]>
Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching fix

Initialize the per-cpu counters before modifying them. Otherwise:

[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 3.11.0-rc5-next-20130816 (khilman@paris) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-1ubuntu1) ) #30 SMP Fri Aug 16 09:47:32 PDT 2013
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine: Generic AM33XX (Flattened Device Tree), model: TI AM335x BeagleBone
[ 0.000000] bootconsole [earlycon0] enabled
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] On node 0 totalpages: 130816
[ 0.000000] free_area_init_node: node 0, pgdat c081d400, node_mem_map c12fc000
[ 0.000000] Normal zone: 1024 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Unable to handle kernel NULL pointer dereference at virtual address 00000026
[ 0.000000] pgd = c0004000
[ 0.000000] [00000026] *pgd=00000000
[ 0.000000] Internal error: Oops: 5 [#1] SMP ARM
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.11.0-rc5-next-20130816 #30
[ 0.000000] task: c0793c70 ti: c0788000 task.ti: c0788000
[ 0.000000] PC is at __mod_zone_page_state+0x2c/0xb4
[ 0.000000] LR is at mod_zone_page_state+0x2c/0x4c

Reported-by: Kevin Hilman <[email protected]>
Signed-off-by: Johannes Weiner <[email protected]>
---
mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 6a95d39..b9e8f2f 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -4826,11 +4826,11 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat,
spin_lock_init(&zone->lru_lock);
zone_seqlock_init(zone);
zone->zone_pgdat = pgdat;
+ zone_pcp_init(zone);

/* For bootup, initialized properly in watermark setup */
mod_zone_page_state(zone, NR_ALLOC_BATCH, zone->managed_pages);

- zone_pcp_init(zone);
lruvec_init(&zone->lruvec);
if (!size)
continue;
--
1.8.3.2

2013-08-19 00:48:22

by Stephen Rothwell

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hi all,

On Fri, 16 Aug 2013 14:52:11 -0700 Kevin Hilman <[email protected]> wrote:
>
> Johannes Weiner <[email protected]> writes:
>
> > On Fri, Aug 16, 2013 at 10:17:01AM -0700, Kevin Hilman wrote:
> >> Johannes Weiner <[email protected]> writes:
> >> > On Wed, Aug 07, 2013 at 11:37:43AM -0400, Johannes Weiner wrote:
> >> > Subject: [patch] mm: page_alloc: use vmstats for fair zone allocation batching
> >> >
> >> > Avoid dirtying the same cache line with every single page allocation
> >> > by making the fair per-zone allocation batch a vmstat item, which will
> >> > turn it into batched percpu counters on SMP.
> >> >
> >> > Signed-off-by: Johannes Weiner <[email protected]>
> >>
> >> I bisected several boot failures on various ARM platform in
> >> next-20130816 down to this patch (commit 67131f9837 in linux-next.)
> >>
> >> Simply reverting it got things booting again on top of -next. Example
> >> boot crash below.
> >
> > Thanks for the bisect and report!
>
> You're welcome. Thanks for the quick fix!
>
> > I deref the percpu pointers before initializing them properly. It
> > didn't trigger on x86 because the percpu offset added to the pointer
> > is big enough so that it does not fall into PFN 0, but it probably
> > ended up corrupting something...
> >
> > Could you try this patch on top of linux-next instead of the revert?
>
> Yup, that change fixes it.
>
> Tested-by: Kevin Hilman <[email protected]>

> Tested-by: Stephen Warren <[email protected]>

I will add that into the akpm-current tree in linux-next today (unless
Andrew releases a new mmotm in the mean time).

--
Cheers,
Stephen Rothwell [email protected]


Attachments:
(No filename) (1.64 kB)
(No filename) (836.00 B)
Download all attachments

2014-04-02 14:26:25

by Thomas Schwinge

[permalink] [raw]
Subject: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hi!

On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> Each zone that holds userspace pages of one workload must be aged at a
> speed proportional to the zone size. [...]

> Fix this with a very simple round robin allocator. [...]

This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).

I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
and it started to exhibit "strange" issues, which I then bisected to this
patch. I'm not saying that the patch is faulty, as it seems to be
working fine for everyone else, so I rather assume that something in a
(vastly?) different corner of the kernel (or my hardware?) is broken.
;-)

The issue is that when X.org/lightdm starts up, there are "garbled"
section on the screen, for example, rectangular boxes that are just black
or otherwise "distorted", and/or sets of glyphs (corresponding to a set
of characters; but not all characters) are displayed as rectangular gray
or black boxes, and/or icons in a GNOME session are not displayed
properly, and so on. (Can take a snapshot if that helps?) Switching to
a Linux console, I can use that one fine. Switching back to X, in the
majority of all cases, the screen will be completely black, but with the
mouse cursor still rendered properly (done in hardware, I assume).

Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
top of v3.12, and everything is back to normal. The problem also
persists with a v3.14 kernel that I just built.

I will try to figure out what's going on, but will gladly take any
pointers, or suggestions about how to tackle such a problem.

The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
using that; instead I put in a Sapphire Radeon HD 4350 card.

$ cat < /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 47
model name : AMD Sempron(tm) Processor 3000+
stepping : 2
cpu MHz : 1000.000
cache size : 128 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
bogomips : 2000.20
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc
$ sudo lspci -nn -k -vv
00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
Latency: 64
Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
Capabilities: [a0] AGP version 3.0
Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
Capabilities: [d0] HyperTransport: Slave or Primary Interface
Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
Revision ID: 1.05
Link Frequency 0: 800MHz
Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
Link Frequency 1: 200MHz
Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
Prefetchable memory behind bridge Upper: 00-00
Bus Number: 00
Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
Capabilities: [5c] HyperTransport: Revision ID: 1.05
Kernel driver in use: agpgart-amd64

00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00002000-00002fff
Memory behind bridge: f2100000-f21fffff
Prefetchable memory behind bridge: e0000000-efffffff
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag+ RBE-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
ClockPM- Surprise- LLActRep+ BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
Control: AttnInd Off, PwrInd Off, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: 00000000 Data: 0000
Capabilities: [f4] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pcieport

00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
Latency: 0

00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 128
Interrupt: pin ? routed to IRQ 16
Region 0: I/O ports at 01f0 [size=8]
Region 1: I/O ports at 03f4
Region 2: I/O ports at 0170 [size=8]
Region 3: I/O ports at 0374
Region 4: I/O ports at 1c80 [size=16]
Capabilities: [58] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: pata_sis

00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
Subsystem: Fujitsu Technology Solutions Device [1734:109c]
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 173 (13000ns min, 2750ns max)
Interrupt: pin C routed to IRQ 18
Region 0: I/O ports at 1400 [size=256]
Region 1: I/O ports at 1000 [size=128]
Capabilities: [48] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: snd_intel8x0

00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (20000ns max)
Interrupt: pin A routed to IRQ 20
Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci-pci

00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (20000ns max)
Interrupt: pin B routed to IRQ 21
Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci-pci

00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (20000ns max)
Interrupt: pin C routed to IRQ 22
Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: ohci-pci

00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (20000ns max)
Interrupt: pin D routed to IRQ 23
Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [50] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: ehci-pci

00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64
Interrupt: pin A routed to IRQ 17
Region 0: I/O ports at 1cb0 [size=8]
Region 1: I/O ports at 1ca4 [size=4]
Region 2: I/O ports at 1ca8 [size=8]
Region 3: I/O ports at 1ca0 [size=4]
Region 4: I/O ports at 1c90 [size=16]
Region 5: I/O ports at 1c00 [size=128]
Capabilities: [58] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: sata_sis

00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
Address: fee0100c Data: 4181
Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0
ExtTag+ RBE-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
Control: AttnInd Off, PwrInd Off, Power- Interlock-
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
Changed: MRL- PresDet- LinkState-
RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
RootCap: CRSVisible-
RootSta: PME ReqID 0000, PMEStatus- PMEPending-
Capabilities: [f4] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [100 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [130 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
Kernel driver in use: pcieport

00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
Interrupt: pin A routed to IRQ 19
Region 0: I/O ports at 1800 [size=256]
Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: r8169

00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Capabilities: [80] HyperTransport: Host or Secondary Interface
Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
Revision ID: 1.02
Link Frequency: 800MHz
Link Error: <Prot- <Ovfl- <EOC- CTLTm-
Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-

00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-

00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Kernel driver in use: amd64_edac

00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Kernel driver in use: k8temp

01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 42
Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
Region 4: I/O ports at 2000 [size=256]
[virtual] Expansion ROM at f2120000 [disabled] [size=128K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0100c Data: 41e1
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Kernel driver in use: radeon

01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin B routed to IRQ 41
Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [50] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 128 bytes
DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0100c Data: 41d1
Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
Kernel driver in use: snd_hda_intel


Grüße,
Thomas


Attachments:
(No filename) (489.00 B)

2014-04-24 13:38:00

by Johannes Weiner

[permalink] [raw]
Subject: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hi Thomas,

On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> Hi!
>
> On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> > Each zone that holds userspace pages of one workload must be aged at a
> > speed proportional to the zone size. [...]
>
> > Fix this with a very simple round robin allocator. [...]
>
> This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
>
> I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> and it started to exhibit "strange" issues, which I then bisected to this
> patch. I'm not saying that the patch is faulty, as it seems to be
> working fine for everyone else, so I rather assume that something in a
> (vastly?) different corner of the kernel (or my hardware?) is broken.
> ;-)
>
> The issue is that when X.org/lightdm starts up, there are "garbled"
> section on the screen, for example, rectangular boxes that are just black
> or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> of characters; but not all characters) are displayed as rectangular gray
> or black boxes, and/or icons in a GNOME session are not displayed
> properly, and so on. (Can take a snapshot if that helps?) Switching to
> a Linux console, I can use that one fine. Switching back to X, in the
> majority of all cases, the screen will be completely black, but with the
> mouse cursor still rendered properly (done in hardware, I assume).
>
> Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
> top of v3.12, and everything is back to normal. The problem also
> persists with a v3.14 kernel that I just built.
>
> I will try to figure out what's going on, but will gladly take any
> pointers, or suggestions about how to tackle such a problem.
>
> The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
> AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
> using that; instead I put in a Sapphire Radeon HD 4350 card.

I went over this code change repeatedly but I could not see anything
directly that would explain it. However, this patch DOES change the
way allocations are placed (while still respecting zone specifiers
like __GFP_DMA etc.) and so it's possible that they unearthed a
corruption, or a wrongly set dma mask in the drivers.

Ccing the radeon driver guys. Full quote follows.

> $ cat < /proc/cpuinfo
> processor : 0
> vendor_id : AuthenticAMD
> cpu family : 15
> model : 47
> model name : AMD Sempron(tm) Processor 3000+
> stepping : 2
> cpu MHz : 1000.000
> cache size : 128 KB
> physical id : 0
> siblings : 1
> core id : 0
> cpu cores : 1
> apicid : 0
> initial apicid : 0
> fpu : yes
> fpu_exception : yes
> cpuid level : 1
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
> bogomips : 2000.20
> TLB size : 1024 4K pages
> clflush size : 64
> cache_alignment : 64
> address sizes : 40 bits physical, 48 bits virtual
> power management: ts fid vid ttp tm stc
> $ sudo lspci -nn -k -vv
> 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> Latency: 64
> Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
> Capabilities: [a0] AGP version 3.0
> Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
> Capabilities: [d0] HyperTransport: Slave or Primary Interface
> Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
> Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> Revision ID: 1.05
> Link Frequency 0: 800MHz
> Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
> Link Frequency 1: 200MHz
> Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> Prefetchable memory behind bridge Upper: 00-00
> Bus Number: 00
> Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
> Capabilities: [5c] HyperTransport: Revision ID: 1.05
> Kernel driver in use: agpgart-amd64
>
> 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> I/O behind bridge: 00002000-00002fff
> Memory behind bridge: f2100000-f21fffff
> Prefetchable memory behind bridge: e0000000-efffffff
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
> BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag+ RBE-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> ClockPM- Surprise- LLActRep+ BwNot-
> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> Control: AttnInd Off, PwrInd Off, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState-
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> Address: 00000000 Data: 0000
> Capabilities: [f4] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: pcieport
>
> 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
> Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> Latency: 0
>
> 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 128
> Interrupt: pin ? routed to IRQ 16
> Region 0: I/O ports at 01f0 [size=8]
> Region 1: I/O ports at 03f4
> Region 2: I/O ports at 0170 [size=8]
> Region 3: I/O ports at 0374
> Region 4: I/O ports at 1c80 [size=16]
> Capabilities: [58] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: pata_sis
>
> 00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 173 (13000ns min, 2750ns max)
> Interrupt: pin C routed to IRQ 18
> Region 0: I/O ports at 1400 [size=256]
> Region 1: I/O ports at 1000 [size=128]
> Capabilities: [48] Power Management version 2
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: snd_intel8x0
>
> 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 64 (20000ns max)
> Interrupt: pin A routed to IRQ 20
> Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
> Kernel driver in use: ohci-pci
>
> 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 64 (20000ns max)
> Interrupt: pin B routed to IRQ 21
> Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
> Kernel driver in use: ohci-pci
>
> 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 64 (20000ns max)
> Interrupt: pin C routed to IRQ 22
> Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
> Kernel driver in use: ohci-pci
>
> 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 64 (20000ns max)
> Interrupt: pin D routed to IRQ 23
> Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
> Capabilities: [50] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: ehci-pci
>
> 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 64
> Interrupt: pin A routed to IRQ 17
> Region 0: I/O ports at 1cb0 [size=8]
> Region 1: I/O ports at 1ca4 [size=4]
> Region 2: I/O ports at 1ca8 [size=8]
> Region 3: I/O ports at 1ca0 [size=4]
> Region 4: I/O ports at 1c90 [size=16]
> Region 5: I/O ports at 1c00 [size=128]
> Capabilities: [58] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: sata_sis
>
> 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
> Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> Address: fee0100c Data: 4181
> Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0
> ExtTag+ RBE-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> ClockPM- Surprise- LLActRep- BwNot-
> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> Control: AttnInd Off, PwrInd Off, Power- Interlock-
> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> Changed: MRL- PresDet- LinkState-
> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> RootCap: CRSVisible-
> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> Capabilities: [f4] Power Management version 2
> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [100 v1] Virtual Channel
> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> Arb: Fixed- WRR32- WRR64- WRR128-
> Ctrl: ArbSelect=Fixed
> Status: InProgress-
> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> Status: NegoPending- InProgress-
> Capabilities: [130 v1] Advanced Error Reporting
> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> Kernel driver in use: pcieport
>
> 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
> Interrupt: pin A routed to IRQ 19
> Region 0: I/O ports at 1800 [size=256]
> Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
> Capabilities: [dc] Power Management version 2
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Kernel driver in use: r8169
>
> 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Capabilities: [80] HyperTransport: Host or Secondary Interface
> Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
> Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> Revision ID: 1.02
> Link Frequency: 800MHz
> Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-
>
> 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>
> 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Kernel driver in use: amd64_edac
>
> 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Kernel driver in use: k8temp
>
> 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
> Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin A routed to IRQ 42
> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
> Region 4: I/O ports at 2000 [size=256]
> [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> ClockPM- Surprise- LLActRep- BwNot-
> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance De-emphasis: -6dB
> LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0100c Data: 41e1
> Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> Kernel driver in use: radeon
>
> 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Interrupt: pin B routed to IRQ 41
> Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
> Capabilities: [50] Power Management version 3
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> MaxPayload 128 bytes, MaxReadReq 128 bytes
> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> ClockPM- Surprise- LLActRep- BwNot-
> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fee0100c Data: 41d1
> Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> Kernel driver in use: snd_hda_intel
>
>
> Gr??e,
> Thomas

2014-04-25 21:47:56

by Jerome Glisse

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
> Hi Thomas,
>
> On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> > Hi!
> >
> > On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> > > Each zone that holds userspace pages of one workload must be aged at a
> > > speed proportional to the zone size. [...]
> >
> > > Fix this with a very simple round robin allocator. [...]
> >
> > This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> > commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> >
> > I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> > and it started to exhibit "strange" issues, which I then bisected to this
> > patch. I'm not saying that the patch is faulty, as it seems to be
> > working fine for everyone else, so I rather assume that something in a
> > (vastly?) different corner of the kernel (or my hardware?) is broken.
> > ;-)
> >
> > The issue is that when X.org/lightdm starts up, there are "garbled"
> > section on the screen, for example, rectangular boxes that are just black
> > or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> > of characters; but not all characters) are displayed as rectangular gray
> > or black boxes, and/or icons in a GNOME session are not displayed
> > properly, and so on. (Can take a snapshot if that helps?) Switching to
> > a Linux console, I can use that one fine. Switching back to X, in the
> > majority of all cases, the screen will be completely black, but with the
> > mouse cursor still rendered properly (done in hardware, I assume).
> >
> > Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
> > top of v3.12, and everything is back to normal. The problem also
> > persists with a v3.14 kernel that I just built.
> >
> > I will try to figure out what's going on, but will gladly take any
> > pointers, or suggestions about how to tackle such a problem.
> >
> > The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
> > AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
> > using that; instead I put in a Sapphire Radeon HD 4350 card.
>
> I went over this code change repeatedly but I could not see anything
> directly that would explain it. However, this patch DOES change the
> way allocations are placed (while still respecting zone specifiers
> like __GFP_DMA etc.) and so it's possible that they unearthed a
> corruption, or a wrongly set dma mask in the drivers.
>
> Ccing the radeon driver guys. Full quote follows.

Can we get a full dmesg, to know if thing like IOMMU are enabled or not.
This is even more puzzling as rv710 has 40bit dma mask iirc and thus you
should be fine even without IOMMU. But given the patch you point to, it
really can only be something that allocate page in place the GPU fails
to access.

Thomas how much memory do you have (again dmes will also provide mapping
informations) ?

My guess is that the pcie bridge can only remap dma page with 32bit dma
mask while the gpu is fine with 40bit dma mask. I always thought that the
pcie/pci code did take care of such thing for us.

Cheers,
J?r?me Glisse

>
> > $ cat < /proc/cpuinfo
> > processor : 0
> > vendor_id : AuthenticAMD
> > cpu family : 15
> > model : 47
> > model name : AMD Sempron(tm) Processor 3000+
> > stepping : 2
> > cpu MHz : 1000.000
> > cache size : 128 KB
> > physical id : 0
> > siblings : 1
> > core id : 0
> > cpu cores : 1
> > apicid : 0
> > initial apicid : 0
> > fpu : yes
> > fpu_exception : yes
> > cpuid level : 1
> > wp : yes
> > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
> > bogomips : 2000.20
> > TLB size : 1024 4K pages
> > clflush size : 64
> > cache_alignment : 64
> > address sizes : 40 bits physical, 48 bits virtual
> > power management: ts fid vid ttp tm stc
> > $ sudo lspci -nn -k -vv
> > 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > Latency: 64
> > Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
> > Capabilities: [a0] AGP version 3.0
> > Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> > Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
> > Capabilities: [d0] HyperTransport: Slave or Primary Interface
> > Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
> > Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> > Revision ID: 1.05
> > Link Frequency 0: 800MHz
> > Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> > Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
> > Link Frequency 1: 200MHz
> > Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> > Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> > Prefetchable memory behind bridge Upper: 00-00
> > Bus Number: 00
> > Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
> > Capabilities: [5c] HyperTransport: Revision ID: 1.05
> > Kernel driver in use: agpgart-amd64
> >
> > 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 0, Cache Line Size: 64 bytes
> > Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > I/O behind bridge: 00002000-00002fff
> > Memory behind bridge: f2100000-f21fffff
> > Prefetchable memory behind bridge: e0000000-efffffff
> > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
> > BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
> > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > ExtTag+ RBE-
> > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > ClockPM- Surprise- LLActRep+ BwNot-
> > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
> > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > Changed: MRL- PresDet- LinkState-
> > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > RootCap: CRSVisible-
> > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> > Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> > Address: 00000000 Data: 0000
> > Capabilities: [f4] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: pcieport
> >
> > 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
> > Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > Latency: 0
> >
> > 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 128
> > Interrupt: pin ? routed to IRQ 16
> > Region 0: I/O ports at 01f0 [size=8]
> > Region 1: I/O ports at 03f4
> > Region 2: I/O ports at 0170 [size=8]
> > Region 3: I/O ports at 0374
> > Region 4: I/O ports at 1c80 [size=16]
> > Capabilities: [58] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: pata_sis
> >
> > 00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> > Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 173 (13000ns min, 2750ns max)
> > Interrupt: pin C routed to IRQ 18
> > Region 0: I/O ports at 1400 [size=256]
> > Region 1: I/O ports at 1000 [size=128]
> > Capabilities: [48] Power Management version 2
> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: snd_intel8x0
> >
> > 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (20000ns max)
> > Interrupt: pin A routed to IRQ 20
> > Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
> > Kernel driver in use: ohci-pci
> >
> > 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (20000ns max)
> > Interrupt: pin B routed to IRQ 21
> > Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
> > Kernel driver in use: ohci-pci
> >
> > 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (20000ns max)
> > Interrupt: pin C routed to IRQ 22
> > Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
> > Kernel driver in use: ohci-pci
> >
> > 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (20000ns max)
> > Interrupt: pin D routed to IRQ 23
> > Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
> > Capabilities: [50] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: ehci-pci
> >
> > 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64
> > Interrupt: pin A routed to IRQ 17
> > Region 0: I/O ports at 1cb0 [size=8]
> > Region 1: I/O ports at 1ca4 [size=4]
> > Region 2: I/O ports at 1ca8 [size=8]
> > Region 3: I/O ports at 1ca0 [size=4]
> > Region 4: I/O ports at 1c90 [size=16]
> > Region 5: I/O ports at 1c00 [size=128]
> > Capabilities: [58] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: sata_sis
> >
> > 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 0, Cache Line Size: 64 bytes
> > Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> > BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
> > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
> > Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > Address: fee0100c Data: 4181
> > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > ExtTag+ RBE-
> > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > ClockPM- Surprise- LLActRep- BwNot-
> > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > Changed: MRL- PresDet- LinkState-
> > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > RootCap: CRSVisible-
> > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > Capabilities: [f4] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Capabilities: [100 v1] Virtual Channel
> > Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> > Arb: Fixed- WRR32- WRR64- WRR128-
> > Ctrl: ArbSelect=Fixed
> > Status: InProgress-
> > VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> > Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> > Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> > Status: NegoPending- InProgress-
> > Capabilities: [130 v1] Advanced Error Reporting
> > UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> > CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> > Kernel driver in use: pcieport
> >
> > 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
> > Interrupt: pin A routed to IRQ 19
> > Region 0: I/O ports at 1800 [size=256]
> > Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
> > Capabilities: [dc] Power Management version 2
> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: r8169
> >
> > 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Capabilities: [80] HyperTransport: Host or Secondary Interface
> > Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
> > Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > Revision ID: 1.02
> > Link Frequency: 800MHz
> > Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> > Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-
> >
> > 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
> > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >
> > 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
> > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Kernel driver in use: amd64_edac
> >
> > 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Kernel driver in use: k8temp
> >
> > 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
> > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > Latency: 0, Cache Line Size: 64 bytes
> > Interrupt: pin A routed to IRQ 42
> > Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> > Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
> > Region 4: I/O ports at 2000 [size=256]
> > [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> > Capabilities: [50] Power Management version 3
> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > ClockPM- Surprise- LLActRep- BwNot-
> > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> > Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> > Compliance De-emphasis: -6dB
> > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > Address: 00000000fee0100c Data: 41e1
> > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > Kernel driver in use: radeon
> >
> > 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 0, Cache Line Size: 64 bytes
> > Interrupt: pin B routed to IRQ 41
> > Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
> > Capabilities: [50] Power Management version 3
> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > ClockPM- Surprise- LLActRep- BwNot-
> > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > Address: 00000000fee0100c Data: 41d1
> > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > Kernel driver in use: snd_hda_intel
> >
> >
> > Gr??e,
> > Thomas
>
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to [email protected]. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

2014-04-25 21:51:04

by Jerome Glisse

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Fri, Apr 25, 2014 at 05:47:48PM -0400, Jerome Glisse wrote:
> On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
> > Hi Thomas,
> >
> > On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> > > Hi!
> > >
> > > On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> > > > Each zone that holds userspace pages of one workload must be aged at a
> > > > speed proportional to the zone size. [...]
> > >
> > > > Fix this with a very simple round robin allocator. [...]
> > >
> > > This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> > > commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> > >
> > > I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> > > and it started to exhibit "strange" issues, which I then bisected to this
> > > patch. I'm not saying that the patch is faulty, as it seems to be
> > > working fine for everyone else, so I rather assume that something in a
> > > (vastly?) different corner of the kernel (or my hardware?) is broken.
> > > ;-)
> > >
> > > The issue is that when X.org/lightdm starts up, there are "garbled"
> > > section on the screen, for example, rectangular boxes that are just black
> > > or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> > > of characters; but not all characters) are displayed as rectangular gray
> > > or black boxes, and/or icons in a GNOME session are not displayed
> > > properly, and so on. (Can take a snapshot if that helps?) Switching to
> > > a Linux console, I can use that one fine. Switching back to X, in the
> > > majority of all cases, the screen will be completely black, but with the
> > > mouse cursor still rendered properly (done in hardware, I assume).
> > >
> > > Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
> > > top of v3.12, and everything is back to normal. The problem also
> > > persists with a v3.14 kernel that I just built.
> > >
> > > I will try to figure out what's going on, but will gladly take any
> > > pointers, or suggestions about how to tackle such a problem.
> > >
> > > The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
> > > AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
> > > using that; instead I put in a Sapphire Radeon HD 4350 card.
> >
> > I went over this code change repeatedly but I could not see anything
> > directly that would explain it. However, this patch DOES change the
> > way allocations are placed (while still respecting zone specifiers
> > like __GFP_DMA etc.) and so it's possible that they unearthed a
> > corruption, or a wrongly set dma mask in the drivers.
> >
> > Ccing the radeon driver guys. Full quote follows.
>
> Can we get a full dmesg, to know if thing like IOMMU are enabled or not.
> This is even more puzzling as rv710 has 40bit dma mask iirc and thus you
> should be fine even without IOMMU. But given the patch you point to, it
> really can only be something that allocate page in place the GPU fails
> to access.
>
> Thomas how much memory do you have (again dmes will also provide mapping
> informations) ?
>
> My guess is that the pcie bridge can only remap dma page with 32bit dma
> mask while the gpu is fine with 40bit dma mask. I always thought that the
> pcie/pci code did take care of such thing for us.
>
> Cheers,
> J?r?me Glisse

Forgot to attach patch to test my theory. Does the attached patch fix
the issue ?

>
> >
> > > $ cat < /proc/cpuinfo
> > > processor : 0
> > > vendor_id : AuthenticAMD
> > > cpu family : 15
> > > model : 47
> > > model name : AMD Sempron(tm) Processor 3000+
> > > stepping : 2
> > > cpu MHz : 1000.000
> > > cache size : 128 KB
> > > physical id : 0
> > > siblings : 1
> > > core id : 0
> > > cpu cores : 1
> > > apicid : 0
> > > initial apicid : 0
> > > fpu : yes
> > > fpu_exception : yes
> > > cpuid level : 1
> > > wp : yes
> > > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
> > > bogomips : 2000.20
> > > TLB size : 1024 4K pages
> > > clflush size : 64
> > > cache_alignment : 64
> > > address sizes : 40 bits physical, 48 bits virtual
> > > power management: ts fid vid ttp tm stc
> > > $ sudo lspci -nn -k -vv
> > > 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > Latency: 64
> > > Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
> > > Capabilities: [a0] AGP version 3.0
> > > Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> > > Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
> > > Capabilities: [d0] HyperTransport: Slave or Primary Interface
> > > Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
> > > Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > > Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> > > Revision ID: 1.05
> > > Link Frequency 0: 800MHz
> > > Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> > > Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> > > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
> > > Link Frequency 1: 200MHz
> > > Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> > > Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > > Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> > > Prefetchable memory behind bridge Upper: 00-00
> > > Bus Number: 00
> > > Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
> > > Capabilities: [5c] HyperTransport: Revision ID: 1.05
> > > Kernel driver in use: agpgart-amd64
> > >
> > > 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 0, Cache Line Size: 64 bytes
> > > Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > > I/O behind bridge: 00002000-00002fff
> > > Memory behind bridge: f2100000-f21fffff
> > > Prefetchable memory behind bridge: e0000000-efffffff
> > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
> > > BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
> > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > ExtTag+ RBE-
> > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > > ClockPM- Surprise- LLActRep+ BwNot-
> > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
> > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > Changed: MRL- PresDet- LinkState-
> > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > RootCap: CRSVisible-
> > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> > > Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> > > Address: 00000000 Data: 0000
> > > Capabilities: [f4] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: pcieport
> > >
> > > 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > Latency: 0
> > >
> > > 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 128
> > > Interrupt: pin ? routed to IRQ 16
> > > Region 0: I/O ports at 01f0 [size=8]
> > > Region 1: I/O ports at 03f4
> > > Region 2: I/O ports at 0170 [size=8]
> > > Region 3: I/O ports at 0374
> > > Region 4: I/O ports at 1c80 [size=16]
> > > Capabilities: [58] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: pata_sis
> > >
> > > 00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> > > Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 173 (13000ns min, 2750ns max)
> > > Interrupt: pin C routed to IRQ 18
> > > Region 0: I/O ports at 1400 [size=256]
> > > Region 1: I/O ports at 1000 [size=128]
> > > Capabilities: [48] Power Management version 2
> > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: snd_intel8x0
> > >
> > > 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (20000ns max)
> > > Interrupt: pin A routed to IRQ 20
> > > Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
> > > Kernel driver in use: ohci-pci
> > >
> > > 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (20000ns max)
> > > Interrupt: pin B routed to IRQ 21
> > > Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
> > > Kernel driver in use: ohci-pci
> > >
> > > 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (20000ns max)
> > > Interrupt: pin C routed to IRQ 22
> > > Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
> > > Kernel driver in use: ohci-pci
> > >
> > > 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (20000ns max)
> > > Interrupt: pin D routed to IRQ 23
> > > Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
> > > Capabilities: [50] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: ehci-pci
> > >
> > > 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64
> > > Interrupt: pin A routed to IRQ 17
> > > Region 0: I/O ports at 1cb0 [size=8]
> > > Region 1: I/O ports at 1ca4 [size=4]
> > > Region 2: I/O ports at 1ca8 [size=8]
> > > Region 3: I/O ports at 1ca0 [size=4]
> > > Region 4: I/O ports at 1c90 [size=16]
> > > Region 5: I/O ports at 1c00 [size=128]
> > > Capabilities: [58] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: sata_sis
> > >
> > > 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 0, Cache Line Size: 64 bytes
> > > Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> > > BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
> > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
> > > Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > > Address: fee0100c Data: 4181
> > > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > ExtTag+ RBE-
> > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > > ClockPM- Surprise- LLActRep- BwNot-
> > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > Changed: MRL- PresDet- LinkState-
> > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > RootCap: CRSVisible-
> > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > Capabilities: [f4] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Capabilities: [100 v1] Virtual Channel
> > > Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> > > Arb: Fixed- WRR32- WRR64- WRR128-
> > > Ctrl: ArbSelect=Fixed
> > > Status: InProgress-
> > > VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> > > Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> > > Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> > > Status: NegoPending- InProgress-
> > > Capabilities: [130 v1] Advanced Error Reporting
> > > UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > > UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > > UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> > > CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > > CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > > AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> > > Kernel driver in use: pcieport
> > >
> > > 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
> > > Interrupt: pin A routed to IRQ 19
> > > Region 0: I/O ports at 1800 [size=256]
> > > Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
> > > Capabilities: [dc] Power Management version 2
> > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: r8169
> > >
> > > 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Capabilities: [80] HyperTransport: Host or Secondary Interface
> > > Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
> > > Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > > Revision ID: 1.02
> > > Link Frequency: 800MHz
> > > Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> > > Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-
> > >
> > > 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
> > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >
> > > 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
> > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Kernel driver in use: amd64_edac
> > >
> > > 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Kernel driver in use: k8temp
> > >
> > > 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
> > > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > Latency: 0, Cache Line Size: 64 bytes
> > > Interrupt: pin A routed to IRQ 42
> > > Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> > > Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
> > > Region 4: I/O ports at 2000 [size=256]
> > > [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> > > Capabilities: [50] Power Management version 3
> > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > > ClockPM- Surprise- LLActRep- BwNot-
> > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > > LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> > > Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> > > Compliance De-emphasis: -6dB
> > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > > Address: 00000000fee0100c Data: 41e1
> > > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > > Kernel driver in use: radeon
> > >
> > > 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> > > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 0, Cache Line Size: 64 bytes
> > > Interrupt: pin B routed to IRQ 41
> > > Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
> > > Capabilities: [50] Power Management version 3
> > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > > ClockPM- Surprise- LLActRep- BwNot-
> > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > > Address: 00000000fee0100c Data: 41d1
> > > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > > Kernel driver in use: snd_hda_intel
> > >
> > >
> > > Gr??e,
> > > Thomas
> >
> >
> > --
> > To unsubscribe, send a message with 'unsubscribe linux-mm' in
> > the body to [email protected]. For more info on Linux MM,
> > see: http://www.linux-mm.org/ .
> > Don't email: <a href=mailto:"[email protected]"> [email protected] </a>


Attachments:
(No filename) (30.45 kB)
force-32bitdma.patch (473.00 B)
Download all attachments

2014-04-25 23:05:10

by Jerome Glisse

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Fri, Apr 25, 2014 at 05:50:57PM -0400, Jerome Glisse wrote:
> On Fri, Apr 25, 2014 at 05:47:48PM -0400, Jerome Glisse wrote:
> > On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
> > > Hi Thomas,
> > >
> > > On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> > > > Hi!
> > > >
> > > > On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> > > > > Each zone that holds userspace pages of one workload must be aged at a
> > > > > speed proportional to the zone size. [...]
> > > >
> > > > > Fix this with a very simple round robin allocator. [...]
> > > >
> > > > This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> > > > commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> > > >
> > > > I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> > > > and it started to exhibit "strange" issues, which I then bisected to this
> > > > patch. I'm not saying that the patch is faulty, as it seems to be
> > > > working fine for everyone else, so I rather assume that something in a
> > > > (vastly?) different corner of the kernel (or my hardware?) is broken.
> > > > ;-)
> > > >
> > > > The issue is that when X.org/lightdm starts up, there are "garbled"
> > > > section on the screen, for example, rectangular boxes that are just black
> > > > or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> > > > of characters; but not all characters) are displayed as rectangular gray
> > > > or black boxes, and/or icons in a GNOME session are not displayed
> > > > properly, and so on. (Can take a snapshot if that helps?) Switching to
> > > > a Linux console, I can use that one fine. Switching back to X, in the
> > > > majority of all cases, the screen will be completely black, but with the
> > > > mouse cursor still rendered properly (done in hardware, I assume).
> > > >
> > > > Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
> > > > top of v3.12, and everything is back to normal. The problem also
> > > > persists with a v3.14 kernel that I just built.
> > > >
> > > > I will try to figure out what's going on, but will gladly take any
> > > > pointers, or suggestions about how to tackle such a problem.
> > > >
> > > > The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
> > > > AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
> > > > using that; instead I put in a Sapphire Radeon HD 4350 card.
> > >
> > > I went over this code change repeatedly but I could not see anything
> > > directly that would explain it. However, this patch DOES change the
> > > way allocations are placed (while still respecting zone specifiers
> > > like __GFP_DMA etc.) and so it's possible that they unearthed a
> > > corruption, or a wrongly set dma mask in the drivers.
> > >
> > > Ccing the radeon driver guys. Full quote follows.
> >
> > Can we get a full dmesg, to know if thing like IOMMU are enabled or not.
> > This is even more puzzling as rv710 has 40bit dma mask iirc and thus you
> > should be fine even without IOMMU. But given the patch you point to, it
> > really can only be something that allocate page in place the GPU fails
> > to access.
> >
> > Thomas how much memory do you have (again dmes will also provide mapping
> > informations) ?
> >
> > My guess is that the pcie bridge can only remap dma page with 32bit dma
> > mask while the gpu is fine with 40bit dma mask. I always thought that the
> > pcie/pci code did take care of such thing for us.
> >
> > Cheers,
> > J?r?me Glisse
>
> Forgot to attach patch to test my theory. Does the attached patch fix
> the issue ?

So this is likely it, the SIS chipset of this motherboard is a freak show.
It support both PCIE and AGP at same time

http://www.newegg.com/Product/Product.aspx?Item=N82E16813185068

Why in hell ?

So my guess is that the root pcie bridge is behind the AGP bridge which
swallow any address > 32bit and thus the dma mask of the pcie radeon
card is just believing that we are living in a sane world.

Cheers,
J?r?me Glisse

>
> >
> > >
> > > > $ cat < /proc/cpuinfo
> > > > processor : 0
> > > > vendor_id : AuthenticAMD
> > > > cpu family : 15
> > > > model : 47
> > > > model name : AMD Sempron(tm) Processor 3000+
> > > > stepping : 2
> > > > cpu MHz : 1000.000
> > > > cache size : 128 KB
> > > > physical id : 0
> > > > siblings : 1
> > > > core id : 0
> > > > cpu cores : 1
> > > > apicid : 0
> > > > initial apicid : 0
> > > > fpu : yes
> > > > fpu_exception : yes
> > > > cpuid level : 1
> > > > wp : yes
> > > > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
> > > > bogomips : 2000.20
> > > > TLB size : 1024 4K pages
> > > > clflush size : 64
> > > > cache_alignment : 64
> > > > address sizes : 40 bits physical, 48 bits virtual
> > > > power management: ts fid vid ttp tm stc
> > > > $ sudo lspci -nn -k -vv
> > > > 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
> > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > > Latency: 64
> > > > Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
> > > > Capabilities: [a0] AGP version 3.0
> > > > Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> > > > Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
> > > > Capabilities: [d0] HyperTransport: Slave or Primary Interface
> > > > Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
> > > > Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > > Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > > > Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > > Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> > > > Revision ID: 1.05
> > > > Link Frequency 0: 800MHz
> > > > Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> > > > Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> > > > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
> > > > Link Frequency 1: 200MHz
> > > > Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> > > > Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > > > Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> > > > Prefetchable memory behind bridge Upper: 00-00
> > > > Bus Number: 00
> > > > Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
> > > > Capabilities: [5c] HyperTransport: Revision ID: 1.05
> > > > Kernel driver in use: agpgart-amd64
> > > >
> > > > 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 0, Cache Line Size: 64 bytes
> > > > Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > > > I/O behind bridge: 00002000-00002fff
> > > > Memory behind bridge: f2100000-f21fffff
> > > > Prefetchable memory behind bridge: e0000000-efffffff
> > > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
> > > > BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
> > > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > > ExtTag+ RBE-
> > > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> > > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > > > ClockPM- Surprise- LLActRep+ BwNot-
> > > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
> > > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > > Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> > > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > > Changed: MRL- PresDet- LinkState-
> > > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > > RootCap: CRSVisible-
> > > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > > Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> > > > Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> > > > Address: 00000000 Data: 0000
> > > > Capabilities: [f4] Power Management version 2
> > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Kernel driver in use: pcieport
> > > >
> > > > 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > > Latency: 0
> > > >
> > > > 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 128
> > > > Interrupt: pin ? routed to IRQ 16
> > > > Region 0: I/O ports at 01f0 [size=8]
> > > > Region 1: I/O ports at 03f4
> > > > Region 2: I/O ports at 0170 [size=8]
> > > > Region 3: I/O ports at 0374
> > > > Region 4: I/O ports at 1c80 [size=16]
> > > > Capabilities: [58] Power Management version 2
> > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Kernel driver in use: pata_sis
> > > >
> > > > 00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> > > > Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> > > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 173 (13000ns min, 2750ns max)
> > > > Interrupt: pin C routed to IRQ 18
> > > > Region 0: I/O ports at 1400 [size=256]
> > > > Region 1: I/O ports at 1000 [size=128]
> > > > Capabilities: [48] Power Management version 2
> > > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Kernel driver in use: snd_intel8x0
> > > >
> > > > 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 64 (20000ns max)
> > > > Interrupt: pin A routed to IRQ 20
> > > > Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
> > > > Kernel driver in use: ohci-pci
> > > >
> > > > 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 64 (20000ns max)
> > > > Interrupt: pin B routed to IRQ 21
> > > > Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
> > > > Kernel driver in use: ohci-pci
> > > >
> > > > 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 64 (20000ns max)
> > > > Interrupt: pin C routed to IRQ 22
> > > > Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
> > > > Kernel driver in use: ohci-pci
> > > >
> > > > 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
> > > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > > > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 64 (20000ns max)
> > > > Interrupt: pin D routed to IRQ 23
> > > > Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
> > > > Capabilities: [50] Power Management version 2
> > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Kernel driver in use: ehci-pci
> > > >
> > > > 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
> > > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 64
> > > > Interrupt: pin A routed to IRQ 17
> > > > Region 0: I/O ports at 1cb0 [size=8]
> > > > Region 1: I/O ports at 1ca4 [size=4]
> > > > Region 2: I/O ports at 1ca8 [size=8]
> > > > Region 3: I/O ports at 1ca0 [size=4]
> > > > Region 4: I/O ports at 1c90 [size=16]
> > > > Region 5: I/O ports at 1c00 [size=128]
> > > > Capabilities: [58] Power Management version 2
> > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Kernel driver in use: sata_sis
> > > >
> > > > 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 0, Cache Line Size: 64 bytes
> > > > Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> > > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> > > > BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
> > > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > > Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
> > > > Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > > > Address: fee0100c Data: 4181
> > > > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > > ExtTag+ RBE-
> > > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> > > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > > > ClockPM- Surprise- LLActRep- BwNot-
> > > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > > LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > > Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> > > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > > Changed: MRL- PresDet- LinkState-
> > > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > > RootCap: CRSVisible-
> > > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > > Capabilities: [f4] Power Management version 2
> > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Capabilities: [100 v1] Virtual Channel
> > > > Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> > > > Arb: Fixed- WRR32- WRR64- WRR128-
> > > > Ctrl: ArbSelect=Fixed
> > > > Status: InProgress-
> > > > VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> > > > Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> > > > Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> > > > Status: NegoPending- InProgress-
> > > > Capabilities: [130 v1] Advanced Error Reporting
> > > > UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > > > UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > > > UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> > > > CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > > > CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > > > AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> > > > Kernel driver in use: pcieport
> > > >
> > > > 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> > > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
> > > > Interrupt: pin A routed to IRQ 19
> > > > Region 0: I/O ports at 1800 [size=256]
> > > > Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
> > > > Capabilities: [dc] Power Management version 2
> > > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Kernel driver in use: r8169
> > > >
> > > > 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> > > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Capabilities: [80] HyperTransport: Host or Secondary Interface
> > > > Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
> > > > Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > > Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > > > Revision ID: 1.02
> > > > Link Frequency: 800MHz
> > > > Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> > > > Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > > > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-
> > > >
> > > > 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
> > > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > >
> > > > 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
> > > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Kernel driver in use: amd64_edac
> > > >
> > > > 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> > > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Kernel driver in use: k8temp
> > > >
> > > > 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
> > > > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > > Latency: 0, Cache Line Size: 64 bytes
> > > > Interrupt: pin A routed to IRQ 42
> > > > Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> > > > Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
> > > > Region 4: I/O ports at 2000 [size=256]
> > > > [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> > > > Capabilities: [50] Power Management version 3
> > > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > > > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > > > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > > > ClockPM- Surprise- LLActRep- BwNot-
> > > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > > > LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> > > > Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> > > > Compliance De-emphasis: -6dB
> > > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > > > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > > > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > > > Address: 00000000fee0100c Data: 41e1
> > > > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > > > Kernel driver in use: radeon
> > > >
> > > > 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> > > > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
> > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > Latency: 0, Cache Line Size: 64 bytes
> > > > Interrupt: pin B routed to IRQ 41
> > > > Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
> > > > Capabilities: [50] Power Management version 3
> > > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > > > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > > > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > > > ClockPM- Surprise- LLActRep- BwNot-
> > > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > > > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > > > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > > > Address: 00000000fee0100c Data: 41d1
> > > > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > > > Kernel driver in use: snd_hda_intel
> > > >
> > > >
> > > > Gr??e,
> > > > Thomas
> > >
> > >
> > > --
> > > To unsubscribe, send a message with 'unsubscribe linux-mm' in
> > > the body to [email protected]. For more info on Linux MM,
> > > see: http://www.linux-mm.org/ .
> > > Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

> diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
> index 511fe26..632f796 100644
> --- a/drivers/gpu/drm/radeon/radeon_device.c
> +++ b/drivers/gpu/drm/radeon/radeon_device.c
> @@ -1244,6 +1244,7 @@ int radeon_device_init(struct radeon_device *rdev,
> rdev->need_dma32 = true;
>
> dma_bits = rdev->need_dma32 ? 32 : 40;
> + dma_bits = 32;
> r = pci_set_dma_mask(rdev->pdev, DMA_BIT_MASK(dma_bits));
> if (r) {
> rdev->need_dma32 = true;

2014-04-27 03:31:23

by Jerome Glisse

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
> Hi Thomas,
>
> On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> > Hi!
> >
> > On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> > > Each zone that holds userspace pages of one workload must be aged at a
> > > speed proportional to the zone size. [...]
> >
> > > Fix this with a very simple round robin allocator. [...]
> >
> > This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> > commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> >
> > I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> > and it started to exhibit "strange" issues, which I then bisected to this
> > patch. I'm not saying that the patch is faulty, as it seems to be
> > working fine for everyone else, so I rather assume that something in a
> > (vastly?) different corner of the kernel (or my hardware?) is broken.
> > ;-)
> >
> > The issue is that when X.org/lightdm starts up, there are "garbled"
> > section on the screen, for example, rectangular boxes that are just black
> > or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> > of characters; but not all characters) are displayed as rectangular gray
> > or black boxes, and/or icons in a GNOME session are not displayed
> > properly, and so on. (Can take a snapshot if that helps?) Switching to
> > a Linux console, I can use that one fine. Switching back to X, in the
> > majority of all cases, the screen will be completely black, but with the
> > mouse cursor still rendered properly (done in hardware, I assume).
> >
> > Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
> > top of v3.12, and everything is back to normal. The problem also
> > persists with a v3.14 kernel that I just built.
> >
> > I will try to figure out what's going on, but will gladly take any
> > pointers, or suggestions about how to tackle such a problem.
> >
> > The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
> > AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
> > using that; instead I put in a Sapphire Radeon HD 4350 card.
>
> I went over this code change repeatedly but I could not see anything
> directly that would explain it. However, this patch DOES change the
> way allocations are placed (while still respecting zone specifiers
> like __GFP_DMA etc.) and so it's possible that they unearthed a
> corruption, or a wrongly set dma mask in the drivers.
>
> Ccing the radeon driver guys. Full quote follows.
>
> > $ cat < /proc/cpuinfo
> > processor : 0
> > vendor_id : AuthenticAMD
> > cpu family : 15
> > model : 47
> > model name : AMD Sempron(tm) Processor 3000+
> > stepping : 2
> > cpu MHz : 1000.000
> > cache size : 128 KB
> > physical id : 0
> > siblings : 1
> > core id : 0
> > cpu cores : 1
> > apicid : 0
> > initial apicid : 0
> > fpu : yes
> > fpu_exception : yes
> > cpuid level : 1
> > wp : yes
> > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
> > bogomips : 2000.20
> > TLB size : 1024 4K pages
> > clflush size : 64
> > cache_alignment : 64
> > address sizes : 40 bits physical, 48 bits virtual
> > power management: ts fid vid ttp tm stc
> > $ sudo lspci -nn -k -vv
> > 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > Latency: 64
> > Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
> > Capabilities: [a0] AGP version 3.0
> > Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> > Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
> > Capabilities: [d0] HyperTransport: Slave or Primary Interface
> > Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
> > Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> > Revision ID: 1.05
> > Link Frequency 0: 800MHz
> > Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> > Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
> > Link Frequency 1: 200MHz
> > Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> > Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> > Prefetchable memory behind bridge Upper: 00-00
> > Bus Number: 00
> > Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
> > Capabilities: [5c] HyperTransport: Revision ID: 1.05
> > Kernel driver in use: agpgart-amd64
> >
> > 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 0, Cache Line Size: 64 bytes
> > Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > I/O behind bridge: 00002000-00002fff
> > Memory behind bridge: f2100000-f21fffff
> > Prefetchable memory behind bridge: e0000000-efffffff
> > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
> > BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
> > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > ExtTag+ RBE-
> > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > ClockPM- Surprise- LLActRep+ BwNot-
> > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
> > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > Changed: MRL- PresDet- LinkState-
> > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > RootCap: CRSVisible-
> > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> > Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> > Address: 00000000 Data: 0000
> > Capabilities: [f4] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: pcieport
> >
> > 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
> > Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > Latency: 0
> >
> > 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 128
> > Interrupt: pin ? routed to IRQ 16
> > Region 0: I/O ports at 01f0 [size=8]
> > Region 1: I/O ports at 03f4
> > Region 2: I/O ports at 0170 [size=8]
> > Region 3: I/O ports at 0374
> > Region 4: I/O ports at 1c80 [size=16]
> > Capabilities: [58] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: pata_sis
> >
> > 00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> > Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 173 (13000ns min, 2750ns max)
> > Interrupt: pin C routed to IRQ 18
> > Region 0: I/O ports at 1400 [size=256]
> > Region 1: I/O ports at 1000 [size=128]
> > Capabilities: [48] Power Management version 2
> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: snd_intel8x0
> >
> > 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (20000ns max)
> > Interrupt: pin A routed to IRQ 20
> > Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
> > Kernel driver in use: ohci-pci
> >
> > 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (20000ns max)
> > Interrupt: pin B routed to IRQ 21
> > Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
> > Kernel driver in use: ohci-pci
> >
> > 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (20000ns max)
> > Interrupt: pin C routed to IRQ 22
> > Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
> > Kernel driver in use: ohci-pci
> >
> > 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (20000ns max)
> > Interrupt: pin D routed to IRQ 23
> > Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
> > Capabilities: [50] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: ehci-pci
> >
> > 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
> > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64
> > Interrupt: pin A routed to IRQ 17
> > Region 0: I/O ports at 1cb0 [size=8]
> > Region 1: I/O ports at 1ca4 [size=4]
> > Region 2: I/O ports at 1ca8 [size=8]
> > Region 3: I/O ports at 1ca0 [size=4]
> > Region 4: I/O ports at 1c90 [size=16]
> > Region 5: I/O ports at 1c00 [size=128]
> > Capabilities: [58] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: sata_sis
> >
> > 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 0, Cache Line Size: 64 bytes
> > Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> > BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
> > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
> > Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > Address: fee0100c Data: 4181
> > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > ExtTag+ RBE-
> > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > ClockPM- Surprise- LLActRep- BwNot-
> > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > Changed: MRL- PresDet- LinkState-
> > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > RootCap: CRSVisible-
> > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > Capabilities: [f4] Power Management version 2
> > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Capabilities: [100 v1] Virtual Channel
> > Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> > Arb: Fixed- WRR32- WRR64- WRR128-
> > Ctrl: ArbSelect=Fixed
> > Status: InProgress-
> > VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> > Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> > Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> > Status: NegoPending- InProgress-
> > Capabilities: [130 v1] Advanced Error Reporting
> > UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> > CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> > Kernel driver in use: pcieport
> >
> > 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
> > Interrupt: pin A routed to IRQ 19
> > Region 0: I/O ports at 1800 [size=256]
> > Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
> > Capabilities: [dc] Power Management version 2
> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Kernel driver in use: r8169
> >
> > 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Capabilities: [80] HyperTransport: Host or Secondary Interface
> > Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
> > Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > Revision ID: 1.02
> > Link Frequency: 800MHz
> > Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> > Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-
> >
> > 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
> > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >
> > 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
> > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Kernel driver in use: amd64_edac
> >
> > 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Kernel driver in use: k8temp
> >
> > 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
> > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > Latency: 0, Cache Line Size: 64 bytes
> > Interrupt: pin A routed to IRQ 42
> > Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> > Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
> > Region 4: I/O ports at 2000 [size=256]
> > [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> > Capabilities: [50] Power Management version 3
> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > ClockPM- Surprise- LLActRep- BwNot-
> > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> > Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> > Compliance De-emphasis: -6dB
> > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > Address: 00000000fee0100c Data: 41e1
> > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > Kernel driver in use: radeon
> >
> > 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
> > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > Latency: 0, Cache Line Size: 64 bytes
> > Interrupt: pin B routed to IRQ 41
> > Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
> > Capabilities: [50] Power Management version 3
> > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > ClockPM- Surprise- LLActRep- BwNot-
> > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > Address: 00000000fee0100c Data: 41d1
> > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > Kernel driver in use: snd_hda_intel
> >
> >
> > Gr??e,
> > Thomas

Thomas can you provide output of lspci -t

Also did you had a chance to test my ugly patch ?

Cheers,
J?r?me

>
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to [email protected]. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

2014-04-27 20:00:39

by Jerome Glisse

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

On Sat, Apr 26, 2014 at 11:31:11PM -0400, Jerome Glisse wrote:
> On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
> > Hi Thomas,
> >
> > On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> > > Hi!
> > >
> > > On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> > > > Each zone that holds userspace pages of one workload must be aged at a
> > > > speed proportional to the zone size. [...]
> > >
> > > > Fix this with a very simple round robin allocator. [...]
> > >
> > > This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> > > commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> > >
> > > I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> > > and it started to exhibit "strange" issues, which I then bisected to this
> > > patch. I'm not saying that the patch is faulty, as it seems to be
> > > working fine for everyone else, so I rather assume that something in a
> > > (vastly?) different corner of the kernel (or my hardware?) is broken.
> > > ;-)
> > >
> > > The issue is that when X.org/lightdm starts up, there are "garbled"
> > > section on the screen, for example, rectangular boxes that are just black
> > > or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> > > of characters; but not all characters) are displayed as rectangular gray
> > > or black boxes, and/or icons in a GNOME session are not displayed
> > > properly, and so on. (Can take a snapshot if that helps?) Switching to
> > > a Linux console, I can use that one fine. Switching back to X, in the
> > > majority of all cases, the screen will be completely black, but with the
> > > mouse cursor still rendered properly (done in hardware, I assume).
> > >
> > > Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
> > > top of v3.12, and everything is back to normal. The problem also
> > > persists with a v3.14 kernel that I just built.
> > >
> > > I will try to figure out what's going on, but will gladly take any
> > > pointers, or suggestions about how to tackle such a problem.
> > >
> > > The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
> > > AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
> > > using that; instead I put in a Sapphire Radeon HD 4350 card.
> >
> > I went over this code change repeatedly but I could not see anything
> > directly that would explain it. However, this patch DOES change the
> > way allocations are placed (while still respecting zone specifiers
> > like __GFP_DMA etc.) and so it's possible that they unearthed a
> > corruption, or a wrongly set dma mask in the drivers.
> >
> > Ccing the radeon driver guys. Full quote follows.
> >
> > > $ cat < /proc/cpuinfo
> > > processor : 0
> > > vendor_id : AuthenticAMD
> > > cpu family : 15
> > > model : 47
> > > model name : AMD Sempron(tm) Processor 3000+
> > > stepping : 2
> > > cpu MHz : 1000.000
> > > cache size : 128 KB
> > > physical id : 0
> > > siblings : 1
> > > core id : 0
> > > cpu cores : 1
> > > apicid : 0
> > > initial apicid : 0
> > > fpu : yes
> > > fpu_exception : yes
> > > cpuid level : 1
> > > wp : yes
> > > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
> > > bogomips : 2000.20
> > > TLB size : 1024 4K pages
> > > clflush size : 64
> > > cache_alignment : 64
> > > address sizes : 40 bits physical, 48 bits virtual
> > > power management: ts fid vid ttp tm stc
> > > $ sudo lspci -nn -k -vv
> > > 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > Latency: 64
> > > Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
> > > Capabilities: [a0] AGP version 3.0
> > > Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> > > Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
> > > Capabilities: [d0] HyperTransport: Slave or Primary Interface
> > > Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
> > > Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > > Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> > > Revision ID: 1.05
> > > Link Frequency 0: 800MHz
> > > Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> > > Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> > > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
> > > Link Frequency 1: 200MHz
> > > Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> > > Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > > Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> > > Prefetchable memory behind bridge Upper: 00-00
> > > Bus Number: 00
> > > Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
> > > Capabilities: [5c] HyperTransport: Revision ID: 1.05
> > > Kernel driver in use: agpgart-amd64
> > >
> > > 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 0, Cache Line Size: 64 bytes
> > > Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > > I/O behind bridge: 00002000-00002fff
> > > Memory behind bridge: f2100000-f21fffff
> > > Prefetchable memory behind bridge: e0000000-efffffff
> > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
> > > BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
> > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > ExtTag+ RBE-
> > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > > ClockPM- Surprise- LLActRep+ BwNot-
> > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
> > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > Changed: MRL- PresDet- LinkState-
> > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > RootCap: CRSVisible-
> > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> > > Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> > > Address: 00000000 Data: 0000
> > > Capabilities: [f4] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: pcieport
> > >
> > > 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > Latency: 0
> > >
> > > 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 128
> > > Interrupt: pin ? routed to IRQ 16
> > > Region 0: I/O ports at 01f0 [size=8]
> > > Region 1: I/O ports at 03f4
> > > Region 2: I/O ports at 0170 [size=8]
> > > Region 3: I/O ports at 0374
> > > Region 4: I/O ports at 1c80 [size=16]
> > > Capabilities: [58] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: pata_sis
> > >
> > > 00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> > > Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 173 (13000ns min, 2750ns max)
> > > Interrupt: pin C routed to IRQ 18
> > > Region 0: I/O ports at 1400 [size=256]
> > > Region 1: I/O ports at 1000 [size=128]
> > > Capabilities: [48] Power Management version 2
> > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: snd_intel8x0
> > >
> > > 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (20000ns max)
> > > Interrupt: pin A routed to IRQ 20
> > > Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
> > > Kernel driver in use: ohci-pci
> > >
> > > 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (20000ns max)
> > > Interrupt: pin B routed to IRQ 21
> > > Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
> > > Kernel driver in use: ohci-pci
> > >
> > > 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (20000ns max)
> > > Interrupt: pin C routed to IRQ 22
> > > Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
> > > Kernel driver in use: ohci-pci
> > >
> > > 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (20000ns max)
> > > Interrupt: pin D routed to IRQ 23
> > > Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
> > > Capabilities: [50] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: ehci-pci
> > >
> > > 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64
> > > Interrupt: pin A routed to IRQ 17
> > > Region 0: I/O ports at 1cb0 [size=8]
> > > Region 1: I/O ports at 1ca4 [size=4]
> > > Region 2: I/O ports at 1ca8 [size=8]
> > > Region 3: I/O ports at 1ca0 [size=4]
> > > Region 4: I/O ports at 1c90 [size=16]
> > > Region 5: I/O ports at 1c00 [size=128]
> > > Capabilities: [58] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: sata_sis
> > >
> > > 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 0, Cache Line Size: 64 bytes
> > > Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> > > BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
> > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
> > > Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > > Address: fee0100c Data: 4181
> > > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > ExtTag+ RBE-
> > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > > ClockPM- Surprise- LLActRep- BwNot-
> > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > Changed: MRL- PresDet- LinkState-
> > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > RootCap: CRSVisible-
> > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > Capabilities: [f4] Power Management version 2
> > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Capabilities: [100 v1] Virtual Channel
> > > Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> > > Arb: Fixed- WRR32- WRR64- WRR128-
> > > Ctrl: ArbSelect=Fixed
> > > Status: InProgress-
> > > VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> > > Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> > > Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> > > Status: NegoPending- InProgress-
> > > Capabilities: [130 v1] Advanced Error Reporting
> > > UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > > UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > > UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> > > CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > > CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > > AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> > > Kernel driver in use: pcieport
> > >
> > > 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
> > > Interrupt: pin A routed to IRQ 19
> > > Region 0: I/O ports at 1800 [size=256]
> > > Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
> > > Capabilities: [dc] Power Management version 2
> > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Kernel driver in use: r8169
> > >
> > > 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Capabilities: [80] HyperTransport: Host or Secondary Interface
> > > Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
> > > Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > > Revision ID: 1.02
> > > Link Frequency: 800MHz
> > > Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> > > Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-
> > >
> > > 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
> > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >
> > > 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
> > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Kernel driver in use: amd64_edac
> > >
> > > 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Kernel driver in use: k8temp
> > >
> > > 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
> > > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > Latency: 0, Cache Line Size: 64 bytes
> > > Interrupt: pin A routed to IRQ 42
> > > Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> > > Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
> > > Region 4: I/O ports at 2000 [size=256]
> > > [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> > > Capabilities: [50] Power Management version 3
> > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > > ClockPM- Surprise- LLActRep- BwNot-
> > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > > LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> > > Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> > > Compliance De-emphasis: -6dB
> > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > > Address: 00000000fee0100c Data: 41e1
> > > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > > Kernel driver in use: radeon
> > >
> > > 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> > > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
> > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > Latency: 0, Cache Line Size: 64 bytes
> > > Interrupt: pin B routed to IRQ 41
> > > Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
> > > Capabilities: [50] Power Management version 3
> > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > > ClockPM- Surprise- LLActRep- BwNot-
> > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > > Address: 00000000fee0100c Data: 41d1
> > > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > > Kernel driver in use: snd_hda_intel
> > >
> > >
> > > Gr??e,
> > > Thomas
>
> Thomas can you provide output of lspci -t
>
> Also did you had a chance to test my ugly patch ?
>
> Cheers,
> J?r?me

If my ugly patch works does this quirk also work ?

--
>From 4a2ed6114cd774e502bab24515988fa1d8366762 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= <[email protected]>
Date: Sun, 27 Apr 2014 15:48:57 -0400
Subject: [PATCH] pci: quirk for pci bridge behind hypertransport link with
32bits addressing.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It seems some PCI or PCIE bridge are behind HyperTransport that do not
support 64bits addressing but only 32bit (even though the HyperTransport
specification state that it should 40bit at least). This patch add a
quirk that walk the parent chain of a device before setting the dma mask
so that any dma allocation/mapping will fit inside the limit of any
HyperTransport link that might be in front of the PCI/PCIE root complex.

Signed-off-by: J?r?me Glisse <[email protected]>
---
drivers/pci/quirks.c | 36 ++++++++++++++++++++++++++++++++++++
include/asm-generic/pci-dma-compat.h | 26 ++++++++++++++++++++++++++
2 files changed, 62 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index e729206..373ae05 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2447,6 +2447,42 @@ out:
pci_dev_put(host_bridge);
}

+#define PCI_HT_LCTR_64B 0x8000 /* 64-bit Addressing Enable */
+
+u64 pci_ht_quirk_dma_32bit_only(struct pci_dev *dev, u64 mask)
+{
+ struct pci_bus *bus = dev->bus;
+
+ do {
+ struct pci_dev *bridge = bus->self;
+ int pos;
+
+ pos = pci_find_ht_capability(bridge, HT_CAPTYPE_SLAVE);
+ if (pos) {
+ int ctrl_off;
+ u16 flags, ctrl;
+
+ /* See hypertransport specification about master host
+ * (section 7.5.3.2 in HTC200393).
+ */
+ pci_read_config_word(dev, pos + PCI_CAP_FLAGS, &flags);
+ ctrl_off = ((flags >> 10) & 1) ?
+ PCI_HT_CAP_SLAVE_CTRL0 : PCI_HT_CAP_SLAVE_CTRL1;
+ pci_read_config_word(dev, pos + ctrl_off, &ctrl);
+ if (!(ctrl & PCI_HT_LCTR_64B)) {
+ /* So 32bits only. Maybe there is one more bug
+ * as HyperTransport specification says that it
+ * should be 40bits.
+ */
+ return 0xffffffff;
+ }
+ }
+ bus = bus->parent;
+ } while (bus);
+ return mask;
+}
+EXPORT_SYMBOL(pci_ht_quirk_dma_32bit_only);
+
static void ht_disable_msi_mapping(struct pci_dev *dev)
{
int pos, ttl = 48;
diff --git a/include/asm-generic/pci-dma-compat.h b/include/asm-generic/pci-dma-compat.h
index 1437b7d..bae17bb 100644
--- a/include/asm-generic/pci-dma-compat.h
+++ b/include/asm-generic/pci-dma-compat.h
@@ -102,13 +102,39 @@ pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr)
}

#ifdef CONFIG_PCI
+
+#ifdef CONFIG_PCI_QUIRKS
+u64 pci_ht_quirk_dma_32bit_only(struct pci_dev *dev, u64 mask);
+#else
+static inline u64 pci_ht_quirk_dma_32bit_only(struct pci_dev *dev, u64 mask)
+{
+ return mask;
+}
+#endif
+
static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
{
+ /* We are living in a monstruous world in which you can have the pci
+ * root complex behind an hypertransport link which can not address
+ * anything above 32bit (well hypertransport specification says 40bits
+ * but hardware such as SIS761 only support 32bits).
+ *
+ * So if a device set a mask bigger than 32bit walk the chain of its
+ * parent to see if any is behind a transportlink and if so check that
+ * the transport link support 64bits.
+ */
+ if (mask & (1ULL << 32ULL)) {
+ mask = pci_ht_quirk_dma_32bit_only(dev, mask);
+ }
return dma_set_mask(&dev->dev, mask);
}

static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
{
+ /* See comment in pci_set_dma_mask */
+ if (mask & (1ULL << 32ULL)) {
+ mask = pci_ht_quirk_dma_32bit_only(dev, mask);
+ }
return dma_set_coherent_mask(&dev->dev, mask);
}
#endif
--
1.9.0

2014-04-28 07:30:30

by Christian König

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

> + /* We are living in a monstruous world in which you can have the pci
> + * root complex behind an hypertransport link which can not address
> + * anything above 32bit (well hypertransport specification says 40bits
> + * but hardware such as SIS761 only support 32bits).
That looks more like a problem with this specific chipset rather than
something that needs a general solution like this.

Maybe we should rather add the PCI-ID(s) of the thing to some kind of
quirks table for now so that the patch isn't so invasive and we can CC
stable as well?

Just a thought,
Christian.

Am 27.04.2014 21:55, schrieb Jerome Glisse:
> On Sat, Apr 26, 2014 at 11:31:11PM -0400, Jerome Glisse wrote:
>> On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
>>> Hi Thomas,
>>>
>>> On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
>>>> Hi!
>>>>
>>>> On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
>>>>> Each zone that holds userspace pages of one workload must be aged at a
>>>>> speed proportional to the zone size. [...]
>>>>> Fix this with a very simple round robin allocator. [...]
>>>> This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
>>>> commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
>>>>
>>>> I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
>>>> and it started to exhibit "strange" issues, which I then bisected to this
>>>> patch. I'm not saying that the patch is faulty, as it seems to be
>>>> working fine for everyone else, so I rather assume that something in a
>>>> (vastly?) different corner of the kernel (or my hardware?) is broken.
>>>> ;-)
>>>>
>>>> The issue is that when X.org/lightdm starts up, there are "garbled"
>>>> section on the screen, for example, rectangular boxes that are just black
>>>> or otherwise "distorted", and/or sets of glyphs (corresponding to a set
>>>> of characters; but not all characters) are displayed as rectangular gray
>>>> or black boxes, and/or icons in a GNOME session are not displayed
>>>> properly, and so on. (Can take a snapshot if that helps?) Switching to
>>>> a Linux console, I can use that one fine. Switching back to X, in the
>>>> majority of all cases, the screen will be completely black, but with the
>>>> mouse cursor still rendered properly (done in hardware, I assume).
>>>>
>>>> Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
>>>> top of v3.12, and everything is back to normal. The problem also
>>>> persists with a v3.14 kernel that I just built.
>>>>
>>>> I will try to figure out what's going on, but will gladly take any
>>>> pointers, or suggestions about how to tackle such a problem.
>>>>
>>>> The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
>>>> AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
>>>> using that; instead I put in a Sapphire Radeon HD 4350 card.
>>> I went over this code change repeatedly but I could not see anything
>>> directly that would explain it. However, this patch DOES change the
>>> way allocations are placed (while still respecting zone specifiers
>>> like __GFP_DMA etc.) and so it's possible that they unearthed a
>>> corruption, or a wrongly set dma mask in the drivers.
>>>
>>> Ccing the radeon driver guys. Full quote follows.
>>>
>>>> $ cat < /proc/cpuinfo
>>>> processor : 0
>>>> vendor_id : AuthenticAMD
>>>> cpu family : 15
>>>> model : 47
>>>> model name : AMD Sempron(tm) Processor 3000+
>>>> stepping : 2
>>>> cpu MHz : 1000.000
>>>> cache size : 128 KB
>>>> physical id : 0
>>>> siblings : 1
>>>> core id : 0
>>>> cpu cores : 1
>>>> apicid : 0
>>>> initial apicid : 0
>>>> fpu : yes
>>>> fpu_exception : yes
>>>> cpuid level : 1
>>>> wp : yes
>>>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
>>>> bogomips : 2000.20
>>>> TLB size : 1024 4K pages
>>>> clflush size : 64
>>>> cache_alignment : 64
>>>> address sizes : 40 bits physical, 48 bits virtual
>>>> power management: ts fid vid ttp tm stc
>>>> $ sudo lspci -nn -k -vv
>>>> 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
>>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
>>>> Latency: 64
>>>> Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
>>>> Capabilities: [a0] AGP version 3.0
>>>> Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
>>>> Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
>>>> Capabilities: [d0] HyperTransport: Slave or Primary Interface
>>>> Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
>>>> Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
>>>> Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
>>>> Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
>>>> Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
>>>> Revision ID: 1.05
>>>> Link Frequency 0: 800MHz
>>>> Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
>>>> Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
>>>> Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
>>>> Link Frequency 1: 200MHz
>>>> Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
>>>> Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
>>>> Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
>>>> Prefetchable memory behind bridge Upper: 00-00
>>>> Bus Number: 00
>>>> Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
>>>> Capabilities: [5c] HyperTransport: Revision ID: 1.05
>>>> Kernel driver in use: agpgart-amd64
>>>>
>>>> 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 0, Cache Line Size: 64 bytes
>>>> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
>>>> I/O behind bridge: 00002000-00002fff
>>>> Memory behind bridge: f2100000-f21fffff
>>>> Prefetchable memory behind bridge: e0000000-efffffff
>>>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
>>>> BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
>>>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>>>> Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
>>>> DevCap: MaxPayload 128 bytes, PhantFunc 0
>>>> ExtTag+ RBE-
>>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
>>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
>>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
>>>> ClockPM- Surprise- LLActRep+ BwNot-
>>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
>>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
>>>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
>>>> Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
>>>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
>>>> Control: AttnInd Off, PwrInd Off, Power- Interlock-
>>>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
>>>> Changed: MRL- PresDet- LinkState-
>>>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
>>>> RootCap: CRSVisible-
>>>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>>>> Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
>>>> Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
>>>> Address: 00000000 Data: 0000
>>>> Capabilities: [f4] Power Management version 2
>>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Kernel driver in use: pcieport
>>>>
>>>> 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
>>>> Latency: 0
>>>>
>>>> 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
>>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
>>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 128
>>>> Interrupt: pin ? routed to IRQ 16
>>>> Region 0: I/O ports at 01f0 [size=8]
>>>> Region 1: I/O ports at 03f4
>>>> Region 2: I/O ports at 0170 [size=8]
>>>> Region 3: I/O ports at 0374
>>>> Region 4: I/O ports at 1c80 [size=16]
>>>> Capabilities: [58] Power Management version 2
>>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Kernel driver in use: pata_sis
>>>>
>>>> 00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
>>>> Subsystem: Fujitsu Technology Solutions Device [1734:109c]
>>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 173 (13000ns min, 2750ns max)
>>>> Interrupt: pin C routed to IRQ 18
>>>> Region 0: I/O ports at 1400 [size=256]
>>>> Region 1: I/O ports at 1000 [size=128]
>>>> Capabilities: [48] Power Management version 2
>>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Kernel driver in use: snd_intel8x0
>>>>
>>>> 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
>>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 64 (20000ns max)
>>>> Interrupt: pin A routed to IRQ 20
>>>> Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
>>>> Kernel driver in use: ohci-pci
>>>>
>>>> 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
>>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 64 (20000ns max)
>>>> Interrupt: pin B routed to IRQ 21
>>>> Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
>>>> Kernel driver in use: ohci-pci
>>>>
>>>> 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
>>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 64 (20000ns max)
>>>> Interrupt: pin C routed to IRQ 22
>>>> Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
>>>> Kernel driver in use: ohci-pci
>>>>
>>>> 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
>>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
>>>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 64 (20000ns max)
>>>> Interrupt: pin D routed to IRQ 23
>>>> Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
>>>> Capabilities: [50] Power Management version 2
>>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Kernel driver in use: ehci-pci
>>>>
>>>> 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
>>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
>>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 64
>>>> Interrupt: pin A routed to IRQ 17
>>>> Region 0: I/O ports at 1cb0 [size=8]
>>>> Region 1: I/O ports at 1ca4 [size=4]
>>>> Region 2: I/O ports at 1ca8 [size=8]
>>>> Region 3: I/O ports at 1ca0 [size=4]
>>>> Region 4: I/O ports at 1c90 [size=16]
>>>> Region 5: I/O ports at 1c00 [size=128]
>>>> Capabilities: [58] Power Management version 2
>>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Kernel driver in use: sata_sis
>>>>
>>>> 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
>>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 0, Cache Line Size: 64 bytes
>>>> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
>>>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
>>>> BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
>>>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>>>> Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
>>>> Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
>>>> Address: fee0100c Data: 4181
>>>> Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
>>>> DevCap: MaxPayload 128 bytes, PhantFunc 0
>>>> ExtTag+ RBE-
>>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
>>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
>>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
>>>> ClockPM- Surprise- LLActRep- BwNot-
>>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
>>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>>>> LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
>>>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
>>>> Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
>>>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
>>>> Control: AttnInd Off, PwrInd Off, Power- Interlock-
>>>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
>>>> Changed: MRL- PresDet- LinkState-
>>>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
>>>> RootCap: CRSVisible-
>>>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>>>> Capabilities: [f4] Power Management version 2
>>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Capabilities: [100 v1] Virtual Channel
>>>> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
>>>> Arb: Fixed- WRR32- WRR64- WRR128-
>>>> Ctrl: ArbSelect=Fixed
>>>> Status: InProgress-
>>>> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
>>>> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
>>>> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
>>>> Status: NegoPending- InProgress-
>>>> Capabilities: [130 v1] Advanced Error Reporting
>>>> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
>>>> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
>>>> UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
>>>> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
>>>> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
>>>> AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
>>>> Kernel driver in use: pcieport
>>>>
>>>> 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
>>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
>>>> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
>>>> Interrupt: pin A routed to IRQ 19
>>>> Region 0: I/O ports at 1800 [size=256]
>>>> Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
>>>> Capabilities: [dc] Power Management version 2
>>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Kernel driver in use: r8169
>>>>
>>>> 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
>>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Capabilities: [80] HyperTransport: Host or Secondary Interface
>>>> Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
>>>> Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
>>>> Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
>>>> Revision ID: 1.02
>>>> Link Frequency: 800MHz
>>>> Link Error: <Prot- <Ovfl- <EOC- CTLTm-
>>>> Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
>>>> Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-
>>>>
>>>> 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
>>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>>
>>>> 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
>>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Kernel driver in use: amd64_edac
>>>>
>>>> 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
>>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
>>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Kernel driver in use: k8temp
>>>>
>>>> 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
>>>> Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
>>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
>>>> Latency: 0, Cache Line Size: 64 bytes
>>>> Interrupt: pin A routed to IRQ 42
>>>> Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
>>>> Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
>>>> Region 4: I/O ports at 2000 [size=256]
>>>> [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
>>>> Capabilities: [50] Power Management version 3
>>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
>>>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
>>>> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
>>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
>>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
>>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
>>>> ClockPM- Surprise- LLActRep- BwNot-
>>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
>>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
>>>> DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
>>>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
>>>> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
>>>> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
>>>> Compliance De-emphasis: -6dB
>>>> LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
>>>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>>>> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
>>>> Address: 00000000fee0100c Data: 41e1
>>>> Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
>>>> Kernel driver in use: radeon
>>>>
>>>> 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
>>>> Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
>>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
>>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
>>>> Latency: 0, Cache Line Size: 64 bytes
>>>> Interrupt: pin B routed to IRQ 41
>>>> Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
>>>> Capabilities: [50] Power Management version 3
>>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
>>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
>>>> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
>>>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
>>>> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
>>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
>>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
>>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
>>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
>>>> ClockPM- Surprise- LLActRep- BwNot-
>>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
>>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
>>>> DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
>>>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
>>>> LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
>>>> EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
>>>> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
>>>> Address: 00000000fee0100c Data: 41d1
>>>> Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
>>>> Kernel driver in use: snd_hda_intel
>>>>
>>>>
>>>> Gr??e,
>>>> Thomas
>> Thomas can you provide output of lspci -t
>>
>> Also did you had a chance to test my ugly patch ?
>>
>> Cheers,
>> J?r?me
> If my ugly patch works does this quirk also work ?
>

2014-04-28 08:04:28

by Thomas Schwinge

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hi!

On Fri, 25 Apr 2014 19:03:22 -0400, Jerome Glisse <[email protected]> wrote:
> On Fri, Apr 25, 2014 at 05:50:57PM -0400, Jerome Glisse wrote:
> > On Fri, Apr 25, 2014 at 05:47:48PM -0400, Jerome Glisse wrote:
> > > On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:

Guys, thanks for following up on that one! We're currently renovating
our (new) home, and relocating, so not much time to look into this issue,
but I'll try my best, and here are some results:

> > > > On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> > > > > On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> > > > > > Each zone that holds userspace pages of one workload must be aged at a
> > > > > > speed proportional to the zone size. [...]
> > > > >
> > > > > > Fix this with a very simple round robin allocator. [...]
> > > > >
> > > > > This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> > > > > commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> > > > >
> > > > > I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> > > > > and it started to exhibit "strange" issues, which I then bisected to this
> > > > > patch. I'm not saying that the patch is faulty, as it seems to be
> > > > > working fine for everyone else, so I rather assume that something in a
> > > > > (vastly?) different corner of the kernel (or my hardware?) is broken.
> > > > > ;-)
> > > > >
> > > > > The issue is that when X.org/lightdm starts up, there are "garbled"
> > > > > section on the screen, for example, rectangular boxes that are just black
> > > > > or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> > > > > of characters; but not all characters) are displayed as rectangular gray
> > > > > or black boxes, and/or icons in a GNOME session are not displayed
> > > > > properly, and so on. (Can take a snapshot if that helps?) Switching to
> > > > > a Linux console, I can use that one fine. Switching back to X, in the
> > > > > majority of all cases, the screen will be completely black, but with the
> > > > > mouse cursor still rendered properly (done in hardware, I assume).
> > > > >
> > > > > Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
> > > > > top of v3.12, and everything is back to normal. The problem also
> > > > > persists with a v3.14 kernel that I just built.
> > > > >
> > > > > I will try to figure out what's going on, but will gladly take any
> > > > > pointers, or suggestions about how to tackle such a problem.
> > > > >
> > > > > The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1, CPU
> > > > > AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
> > > > > using that; instead I put in a Sapphire Radeon HD 4350 card.
> > > >
> > > > I went over this code change repeatedly but I could not see anything
> > > > directly that would explain it. However, this patch DOES change the
> > > > way allocations are placed (while still respecting zone specifiers
> > > > like __GFP_DMA etc.) and so it's possible that they unearthed a
> > > > corruption, or a wrongly set dma mask in the drivers.

OK, that was my impression too from reading the patch -- though, in
contrast to you, I'm not familiar with this Linux kernel code, so might
easily miss some "details". ;-)

> > > Can we get a full dmesg, to know if thing like IOMMU are enabled or not.

Attached dmesg-v3.12 and dmesg-v3.14.

> > > This is even more puzzling as rv710 has 40bit dma mask iirc and thus you
> > > should be fine even without IOMMU. But given the patch you point to, it
> > > really can only be something that allocate page in place the GPU fails
> > > to access.
> > >
> > > Thomas how much memory do you have (again dmes will also provide mapping
> > > informations) ?

4 GiB; see dmesg.

> > > My guess is that the pcie bridge can only remap dma page with 32bit dma
> > > mask while the gpu is fine with 40bit dma mask. I always thought that the
> > > pcie/pci code did take care of such thing for us.
> >
> > Forgot to attach patch to test my theory. Does the attached patch fix
> > the issue ?

Unfortunately it does not. :-/

> So this is likely it, the SIS chipset of this motherboard is a freak show.

Well, it has been a freak show before: system crash if I put into the CD
drive a specific audio CD:
<http://news.gmane.org/find-root.php?message_id=%3C87obojef7t.fsf%40schwinge.name%3E>.
(This issue remains unresolved, unless it has "fixed itself" -- I have
not recently tried what happens now.)

> It support both PCIE and AGP at same time
>
> http://www.newegg.com/Product/Product.aspx?Item=N82E16813185068
>
> Why in hell ?
>
> So my guess is that the root pcie bridge is behind the AGP bridge which
> swallow any address > 32bit and thus the dma mask of the pcie radeon
> card is just believing that we are living in a sane world.

$ lspci -vt
-[0000:00]-+-00.0 Silicon Integrated Systems [SiS] 761/M761 Host
+-01.0-[01]--+-00.0 Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v]
| \-00.1 Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series]
+-02.0 Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO]
+-02.5 Silicon Integrated Systems [SiS] 5513 IDE Controller
+-02.7 Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller
+-03.0 Silicon Integrated Systems [SiS] USB 1.1 Controller
+-03.1 Silicon Integrated Systems [SiS] USB 1.1 Controller
+-03.2 Silicon Integrated Systems [SiS] USB 1.1 Controller
+-03.3 Silicon Integrated Systems [SiS] USB 2.0 Controller
+-05.0 Silicon Integrated Systems [SiS] 182 SATA/RAID Controller
+-06.0-[02]--
+-09.0 Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller
+-18.0 Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
+-18.1 Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map
+-18.2 Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller
\-18.3 Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control

Full quote follows:

> > > > > $ cat < /proc/cpuinfo
> > > > > processor : 0
> > > > > vendor_id : AuthenticAMD
> > > > > cpu family : 15
> > > > > model : 47
> > > > > model name : AMD Sempron(tm) Processor 3000+
> > > > > stepping : 2
> > > > > cpu MHz : 1000.000
> > > > > cache size : 128 KB
> > > > > physical id : 0
> > > > > siblings : 1
> > > > > core id : 0
> > > > > cpu cores : 1
> > > > > apicid : 0
> > > > > initial apicid : 0
> > > > > fpu : yes
> > > > > fpu_exception : yes
> > > > > cpuid level : 1
> > > > > wp : yes
> > > > > flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl pni lahf_lm
> > > > > bogomips : 2000.20
> > > > > TLB size : 1024 4K pages
> > > > > clflush size : 64
> > > > > cache_alignment : 64
> > > > > address sizes : 40 bits physical, 48 bits virtual
> > > > > power management: ts fid vid ttp tm stc
> > > > > $ sudo lspci -nn -k -vv
> > > > > 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761 Host [1039:0761] (rev 01)
> > > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1099]
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > > > Latency: 64
> > > > > Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=32M]
> > > > > Capabilities: [a0] AGP version 3.0
> > > > > Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64- HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> > > > > Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit- FW- Rate=<none>
> > > > > Capabilities: [d0] HyperTransport: Slave or Primary Interface
> > > > > Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
> > > > > Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > > > Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > > > > Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+ <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > > > Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut- LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> > > > > Revision ID: 1.05
> > > > > Link Frequency 0: 800MHz
> > > > > Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> > > > > Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> > > > > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+ UIDRD-
> > > > > Link Frequency 1: 200MHz
> > > > > Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> > > > > Link Frequency Capability 1: 200MHz- 300MHz- 400MHz- 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > > > > Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE- SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> > > > > Prefetchable memory behind bridge Upper: 00-00
> > > > > Bus Number: 00
> > > > > Capabilities: [f0] HyperTransport: Interrupt Discovery and Configuration
> > > > > Capabilities: [5c] HyperTransport: Revision ID: 1.05
> > > > > Kernel driver in use: agpgart-amd64
> > > > >
> > > > > 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:0004] (prog-if 00 [Normal decode])
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 0, Cache Line Size: 64 bytes
> > > > > Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > > > > I/O behind bridge: 00002000-00002fff
> > > > > Memory behind bridge: f2100000-f21fffff
> > > > > Prefetchable memory behind bridge: e0000000-efffffff
> > > > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ <SERR- <PERR-
> > > > > BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-
> > > > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > > > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > > > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > > > ExtTag+ RBE-
> > > > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
> > > > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > > > > ClockPM- Surprise- LLActRep+ BwNot-
> > > > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt-
> > > > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > > > Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> > > > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > > > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > > > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > > > Changed: MRL- PresDet- LinkState-
> > > > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > > > RootCap: CRSVisible-
> > > > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > > > Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> > > > > Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> > > > > Address: 00000000 Data: 0000
> > > > > Capabilities: [f4] Power Management version 2
> > > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Kernel driver in use: pcieport
> > > > >
> > > > > 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965 [MuTIOL Media IO] [1039:0965] (rev 48)
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > > > Latency: 0
> > > > >
> > > > > 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> > > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 128
> > > > > Interrupt: pin ? routed to IRQ 16
> > > > > Region 0: I/O ports at 01f0 [size=8]
> > > > > Region 1: I/O ports at 03f4
> > > > > Region 2: I/O ports at 0170 [size=8]
> > > > > Region 3: I/O ports at 0374
> > > > > Region 4: I/O ports at 1c80 [size=16]
> > > > > Capabilities: [58] Power Management version 2
> > > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Kernel driver in use: pata_sis
> > > > >
> > > > > 00:02.7 Multimedia audio controller [0401]: Silicon Integrated Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> > > > > Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> > > > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 173 (13000ns min, 2750ns max)
> > > > > Interrupt: pin C routed to IRQ 18
> > > > > Region 0: I/O ports at 1400 [size=256]
> > > > > Region 1: I/O ports at 1000 [size=128]
> > > > > Capabilities: [48] Power Management version 2
> > > > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Kernel driver in use: snd_intel8x0
> > > > >
> > > > > 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 64 (20000ns max)
> > > > > Interrupt: pin A routed to IRQ 20
> > > > > Region 0: Memory at f2000000 (32-bit, non-prefetchable) [size=4K]
> > > > > Kernel driver in use: ohci-pci
> > > > >
> > > > > 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 64 (20000ns max)
> > > > > Interrupt: pin B routed to IRQ 21
> > > > > Region 0: Memory at f2001000 (32-bit, non-prefetchable) [size=4K]
> > > > > Kernel driver in use: ohci-pci
> > > > >
> > > > > 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1 Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > > > > Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard [1734:1095]
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > > Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 64 (20000ns max)
> > > > > Interrupt: pin C routed to IRQ 22
> > > > > Region 0: Memory at f2002000 (32-bit, non-prefetchable) [size=4K]
> > > > > Kernel driver in use: ohci-pci
> > > > >
> > > > > 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0 Controller [1039:7002] (prog-if 20 [EHCI])
> > > > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > > > > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > > Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 64 (20000ns max)
> > > > > Interrupt: pin D routed to IRQ 23
> > > > > Region 0: Memory at f2003000 (32-bit, non-prefetchable) [size=4K]
> > > > > Capabilities: [50] Power Management version 2
> > > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Kernel driver in use: ehci-pci
> > > > >
> > > > > 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182 SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP PriO])
> > > > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > > > > Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 64
> > > > > Interrupt: pin A routed to IRQ 17
> > > > > Region 0: I/O ports at 1cb0 [size=8]
> > > > > Region 1: I/O ports at 1ca4 [size=4]
> > > > > Region 2: I/O ports at 1ca8 [size=8]
> > > > > Region 3: I/O ports at 1ca0 [size=4]
> > > > > Region 4: I/O ports at 1c90 [size=16]
> > > > > Region 5: I/O ports at 1c00 [size=128]
> > > > > Capabilities: [58] Power Management version 2
> > > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold+)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Kernel driver in use: sata_sis
> > > > >
> > > > > 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI bridge [1039:000a] (prog-if 00 [Normal decode])
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 0, Cache Line Size: 64 bytes
> > > > > Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> > > > > Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
> > > > > BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
> > > > > PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > > > > Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS] Device [1039:0000]
> > > > > Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > > > > Address: fee0100c Data: 4181
> > > > > Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > > > > DevCap: MaxPayload 128 bytes, PhantFunc 0
> > > > > ExtTag+ RBE-
> > > > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> > > > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
> > > > > ClockPM- Surprise- LLActRep- BwNot-
> > > > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> > > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > > > LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > > > SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
> > > > > Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> > > > > SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
> > > > > Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > > > > SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
> > > > > Changed: MRL- PresDet- LinkState-
> > > > > RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible-
> > > > > RootCap: CRSVisible-
> > > > > RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > > > > Capabilities: [f4] Power Management version 2
> > > > > Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Capabilities: [100 v1] Virtual Channel
> > > > > Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> > > > > Arb: Fixed- WRR32- WRR64- WRR128-
> > > > > Ctrl: ArbSelect=Fixed
> > > > > Status: InProgress-
> > > > > VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> > > > > Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
> > > > > Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> > > > > Status: NegoPending- InProgress-
> > > > > Capabilities: [130 v1] Advanced Error Reporting
> > > > > UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > > > > UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > > > > UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> > > > > CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > > > > CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> > > > > AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> > > > > Kernel driver in use: pcieport
> > > > >
> > > > > 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> > > > > Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > > > > Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
> > > > > Interrupt: pin A routed to IRQ 19
> > > > > Region 0: I/O ports at 1800 [size=256]
> > > > > Region 1: Memory at f2004000 (32-bit, non-prefetchable) [size=256]
> > > > > Capabilities: [dc] Power Management version 2
> > > > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Kernel driver in use: r8169
> > > > >
> > > > > 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> > > > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Capabilities: [80] HyperTransport: Host or Secondary Interface
> > > > > Command: WarmRst+ DblEnd- DevNum=0 ChainSide- HostHide+ Slave- <EOCErr- DUL-
> > > > > Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO- <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > > > > Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut- LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > > > > Revision ID: 1.02
> > > > > Link Frequency: 800MHz
> > > > > Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> > > > > Link Frequency Capability: 200MHz+ 300MHz- 400MHz+ 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > > > > Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA- UIDRD- ExtRS- UCnfE-
> > > > >
> > > > > 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Address Map [1022:1101]
> > > > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > >
> > > > > 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] DRAM Controller [1022:1102]
> > > > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Kernel driver in use: amd64_edac
> > > > >
> > > > > 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8 [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> > > > > Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > > > > Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Kernel driver in use: k8temp
> > > > >
> > > > > 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v] [1002:9553] (prog-if 00 [VGA controller])
> > > > > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:3092]
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > > > > Latency: 0, Cache Line Size: 64 bytes
> > > > > Interrupt: pin A routed to IRQ 42
> > > > > Region 0: Memory at e0000000 (64-bit, prefetchable) [size=256M]
> > > > > Region 2: Memory at f2100000 (64-bit, non-prefetchable) [size=64K]
> > > > > Region 4: I/O ports at 2000 [size=256]
> > > > > [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> > > > > Capabilities: [50] Power Management version 3
> > > > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > > > > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > > > > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > > > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > > > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > > > > ClockPM- Surprise- LLActRep- BwNot-
> > > > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > > > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > > > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > > > > LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
> > > > > Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> > > > > Compliance De-emphasis: -6dB
> > > > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > > > > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > > > > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > > > > Address: 00000000fee0100c Data: 41e1
> > > > > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > > > > Kernel driver in use: radeon
> > > > >
> > > > > 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> > > > > Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aa38]
> > > > > Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > > > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > > > > Latency: 0, Cache Line Size: 64 bytes
> > > > > Interrupt: pin B routed to IRQ 41
> > > > > Region 0: Memory at f2110000 (64-bit, non-prefetchable) [size=16K]
> > > > > Capabilities: [50] Power Management version 3
> > > > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
> > > > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > > > > Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > > > > DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> > > > > ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > > > > DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> > > > > RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > > > > MaxPayload 128 bytes, MaxReadReq 128 bytes
> > > > > DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
> > > > > LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <64ns, L1 <1us
> > > > > ClockPM- Surprise- LLActRep- BwNot-
> > > > > LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > > > > ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > > > > LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> > > > > DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR-, OBFF Not Supported
> > > > > DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
> > > > > LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
> > > > > EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
> > > > > Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > > > > Address: 00000000fee0100c Data: 41d1
> > > > > Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
> > > > > Kernel driver in use: snd_hda_intel


Grüße,
Thomas



Attachments:
dmesg-v3.12 (44.10 kB)
dmesg-v3.14 (43.15 kB)
(No filename) (489.00 B)
Download all attachments

2014-04-28 08:09:30

by Thomas Schwinge

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hi!

On Sun, 27 Apr 2014 15:55:29 -0400, Jerome Glisse <[email protected]> wrote:
> If my ugly patch works does this quirk also work ?

Unfortunately they both don't; see my other email,
<http://news.gmane.org/find-root.php?message_id=%3C87sioxq3rx.fsf%40schwinge.name%3E>.


Also, the quirk patch resulted in a NULL pointer dereference in
pci_find_ht_capability+0x4/0x30, which I hacked around as follows:

diff --git drivers/pci/quirks.c drivers/pci/quirks.c
index f025867..33aaad2 100644
--- drivers/pci/quirks.c
+++ drivers/pci/quirks.c
@@ -2452,6 +2452,8 @@ u64 pci_ht_quirk_dma_32bit_only(struct pci_dev *dev, u64 mask)
struct pci_dev *bridge = bus->self;
int pos;

+ if (!bridge)
+ goto skip;
pos = pci_find_ht_capability(bridge, HT_CAPTYPE_SLAVE);
if (pos) {
int ctrl_off;
@@ -2472,6 +2474,7 @@ u64 pci_ht_quirk_dma_32bit_only(struct pci_dev *dev, u64 mask)
return 0xffffffff;
}
}
+ skip:
bus = bus->parent;
} while (bus);
return mask;

If needed, I can try to capture more data, but someone who has knowledge
of PCI bus architecture and Linux kernel code (so, not me), might
probably already see what's wrong.


Grüße,
Thomas


Attachments:
(No filename) (489.00 B)

2014-04-28 09:09:17

by Thomas Schwinge

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hi!

On Mon, 28 Apr 2014 10:03:46 +0200, I wrote:
> On Fri, 25 Apr 2014 19:03:22 -0400, Jerome Glisse <[email protected]> wrote:
> > On Fri, Apr 25, 2014 at 05:50:57PM -0400, Jerome Glisse wrote:
> > > On Fri, Apr 25, 2014 at 05:47:48PM -0400, Jerome Glisse wrote:
> > > > On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
> > > > > On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> > > > > > On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner <[email protected]> wrote:
> > > > > > > Each zone that holds userspace pages of one workload must be aged at a
> > > > > > > speed proportional to the zone size. [...]
> > > > > >
> > > > > > > Fix this with a very simple round robin allocator. [...]
> > > > > >
> > > > > > This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> > > > > > commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> > > > > >
> > > > > > I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> > > > > > and it started to exhibit "strange" issues, which I then bisected to this
> > > > > > patch. I'm not saying that the patch is faulty, as it seems to be
> > > > > > working fine for everyone else, so I rather assume that something in a
> > > > > > (vastly?) different corner of the kernel (or my hardware?) is broken.
> > > > > > ;-)
> > > > > >
> > > > > > The issue is that when X.org/lightdm starts up, there are "garbled"
> > > > > > section on the screen, for example, rectangular boxes that are just black
> > > > > > or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> > > > > > of characters; but not all characters) are displayed as rectangular gray
> > > > > > or black boxes, and/or icons in a GNOME session are not displayed
> > > > > > properly, and so on. (Can take a snapshot if that helps?) Switching to
> > > > > > a Linux console, I can use that one fine. Switching back to X, in the
> > > > > > majority of all cases, the screen will be completely black, but with the
> > > > > > mouse cursor still rendered properly (done in hardware, I assume).
> > > > > >
> > > > > > Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for example on
> > > > > > top of v3.12, and everything is back to normal. The problem also
> > > > > > persists with a v3.14 kernel that I just built.

> > > > My guess is that the pcie bridge can only remap dma page with 32bit dma
> > > > mask while the gpu is fine with 40bit dma mask. I always thought that the
> > > > pcie/pci code did take care of such thing for us.
> > >
> > > Forgot to attach patch to test my theory. Does the attached patch fix
> > > the issue ?
>
> Unfortunately it does not. :-/

Ha, the following seems to do it: additionally to dma_bits (your patch),
I'm also overriding need_dma32 for later use in
drivers/gpu/drm/ttm/ttm_bo.c:ttm_bo_add_ttm, I assume. With that hack
applied, I have now rebooted a v3.14 build a few times, and so far things
"look" fine.

diff --git drivers/gpu/drm/radeon/radeon_device.c drivers/gpu/drm/radeon/radeon_device.c
index 044bc98..90baf2f 100644
--- drivers/gpu/drm/radeon/radeon_device.c
+++ drivers/gpu/drm/radeon/radeon_device.c
@@ -1243,6 +1243,8 @@ int radeon_device_init(struct radeon_device *rdev,
rdev->need_dma32 = true;

dma_bits = rdev->need_dma32 ? 32 : 40;
+ dma_bits = 32;
+ rdev->need_dma32 = true;
r = pci_set_dma_mask(rdev->pdev, DMA_BIT_MASK(dma_bits));
if (r) {
rdev->need_dma32 = true;


Grüße,
Thomas


Attachments:
(No filename) (489.00 B)

2014-04-28 12:51:47

by Deucher, Alexander

[permalink] [raw]
Subject: RE: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

> -----Original Message-----
> From: Koenig, Christian
> Sent: Monday, April 28, 2014 3:30 AM
> To: Jerome Glisse; Thomas Schwinge
> Cc: Bjorn Helgaas; [email protected]; Johannes Weiner; Mel Gorman;
> Rik van Riel; Andrea Arcangeli; Zlatko Calusic; Minchan Kim; linux-
> [email protected]; [email protected]; Andrew Morton; Deucher,
> Alexander; [email protected]
> Subject: Re: radeon: screen garbled after page allocator change, was: Re:
> [patch v2 3/3] mm: page_alloc: fair zone allocator policy
>
> > + /* We are living in a monstruous world in which you can have the pci
> > + * root complex behind an hypertransport link which can not address
> > + * anything above 32bit (well hypertransport specification says 40bits
> > + * but hardware such as SIS761 only support 32bits).
> That looks more like a problem with this specific chipset rather than
> something that needs a general solution like this.
>
> Maybe we should rather add the PCI-ID(s) of the thing to some kind of
> quirks table for now so that the patch isn't so invasive and we can CC
> stable as well?

IIRC, there was someone on IRC with a similar problem with a similar SiS chipset a while back. These SiS chipsets seem to be generally problematic.

Alex

>
> Just a thought,
> Christian.
>
> Am 27.04.2014 21:55, schrieb Jerome Glisse:
> > On Sat, Apr 26, 2014 at 11:31:11PM -0400, Jerome Glisse wrote:
> >> On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
> >>> Hi Thomas,
> >>>
> >>> On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> >>>> Hi!
> >>>>
> >>>> On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner
> <[email protected]> wrote:
> >>>>> Each zone that holds userspace pages of one workload must be aged
> at a
> >>>>> speed proportional to the zone size. [...]
> >>>>> Fix this with a very simple round robin allocator. [...]
> >>>> This patch, adding NR_ALLOC_BATCH, eventually landed in mainline as
> >>>> commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> >>>>
> >>>> I recently upgraded a Debian testing system from a 3.11 kernel to 3.12,
> >>>> and it started to exhibit "strange" issues, which I then bisected to this
> >>>> patch. I'm not saying that the patch is faulty, as it seems to be
> >>>> working fine for everyone else, so I rather assume that something in a
> >>>> (vastly?) different corner of the kernel (or my hardware?) is broken.
> >>>> ;-)
> >>>>
> >>>> The issue is that when X.org/lightdm starts up, there are "garbled"
> >>>> section on the screen, for example, rectangular boxes that are just
> black
> >>>> or otherwise "distorted", and/or sets of glyphs (corresponding to a set
> >>>> of characters; but not all characters) are displayed as rectangular gray
> >>>> or black boxes, and/or icons in a GNOME session are not displayed
> >>>> properly, and so on. (Can take a snapshot if that helps?) Switching to
> >>>> a Linux console, I can use that one fine. Switching back to X, in the
> >>>> majority of all cases, the screen will be completely black, but with the
> >>>> mouse cursor still rendered properly (done in hardware, I assume).
> >>>>
> >>>> Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for
> example on
> >>>> top of v3.12, and everything is back to normal. The problem also
> >>>> persists with a v3.14 kernel that I just built.
> >>>>
> >>>> I will try to figure out what's going on, but will gladly take any
> >>>> pointers, or suggestions about how to tackle such a problem.
> >>>>
> >>>> The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-A1,
> CPU
> >>>> AMD Sempron 3000+. There is a on-board graphics thingy, but I'm not
> >>>> using that; instead I put in a Sapphire Radeon HD 4350 card.
> >>> I went over this code change repeatedly but I could not see anything
> >>> directly that would explain it. However, this patch DOES change the
> >>> way allocations are placed (while still respecting zone specifiers
> >>> like __GFP_DMA etc.) and so it's possible that they unearthed a
> >>> corruption, or a wrongly set dma mask in the drivers.
> >>>
> >>> Ccing the radeon driver guys. Full quote follows.
> >>>
> >>>> $ cat < /proc/cpuinfo
> >>>> processor : 0
> >>>> vendor_id : AuthenticAMD
> >>>> cpu family : 15
> >>>> model : 47
> >>>> model name : AMD Sempron(tm) Processor 3000+
> >>>> stepping : 2
> >>>> cpu MHz : 1000.000
> >>>> cache size : 128 KB
> >>>> physical id : 0
> >>>> siblings : 1
> >>>> core id : 0
> >>>> cpu cores : 1
> >>>> apicid : 0
> >>>> initial apicid : 0
> >>>> fpu : yes
> >>>> fpu_exception : yes
> >>>> cpuid level : 1
> >>>> wp : yes
> >>>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
> mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm
> 3dnowext 3dnow rep_good nopl pni lahf_lm
> >>>> bogomips : 2000.20
> >>>> TLB size : 1024 4K pages
> >>>> clflush size : 64
> >>>> cache_alignment : 64
> >>>> address sizes : 40 bits physical, 48 bits virtual
> >>>> power management: ts fid vid ttp tm stc
> >>>> $ sudo lspci -nn -k -vv
> >>>> 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS] 761/M761
> Host [1039:0761] (rev 01)
> >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard
> [1734:1099]
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> >>>> Latency: 64
> >>>> Region 0: Memory at f0000000 (32-bit, non-prefetchable)
> [size=32M]
> >>>> Capabilities: [a0] AGP version 3.0
> >>>> Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64-
> HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> >>>> Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit-
> FW- Rate=<none>
> >>>> Capabilities: [d0] HyperTransport: Slave or Primary Interface
> >>>> Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir- DUL-
> >>>> Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
> <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> >>>> Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
> LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> >>>> Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+
> <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> >>>> Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut-
> LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> >>>> Revision ID: 1.05
> >>>> Link Frequency 0: 800MHz
> >>>> Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> >>>> Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+
> 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> >>>> Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA+
> UIDRD-
> >>>> Link Frequency 1: 200MHz
> >>>> Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> >>>> Link Frequency Capability 1: 200MHz- 300MHz- 400MHz-
> 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> >>>> Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE-
> SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> >>>> Prefetchable memory behind bridge Upper: 00-00
> >>>> Bus Number: 00
> >>>> Capabilities: [f0] HyperTransport: Interrupt Discovery and
> Configuration
> >>>> Capabilities: [5c] HyperTransport: Revision ID: 1.05
> >>>> Kernel driver in use: agpgart-amd64
> >>>>
> >>>> 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI
> bridge [1039:0004] (prog-if 00 [Normal decode])
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 0, Cache Line Size: 64 bytes
> >>>> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> >>>> I/O behind bridge: 00002000-00002fff
> >>>> Memory behind bridge: f2100000-f21fffff
> >>>> Prefetchable memory behind bridge: e0000000-efffffff
> >>>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort+ <SERR- <PERR-
> >>>> BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset-
> FastB2B-
> >>>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> >>>> Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> >>>> DevCap: MaxPayload 128 bytes, PhantFunc 0
> >>>> ExtTag+ RBE-
> >>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
> Unsupported-
> >>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> >>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
> >>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+
> TransPend-
> >>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit
> Latency L0s <1us, L1 <2us
> >>>> ClockPM- Surprise- LLActRep+ BwNot-
> >>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> >>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> >>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
> DLActive+ BWMgmt- ABWMgmt-
> >>>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
> Surprise-
> >>>> Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> >>>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
> HPIrq- LinkChg-
> >>>> Control: AttnInd Off, PwrInd Off, Power- Interlock-
> >>>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+
> Interlock-
> >>>> Changed: MRL- PresDet- LinkState-
> >>>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
> CRSVisible-
> >>>> RootCap: CRSVisible-
> >>>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> >>>> Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> >>>> Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> >>>> Address: 00000000 Data: 0000
> >>>> Capabilities: [f4] Power Management version 2
> >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-
> ,D2-,D3hot+,D3cold+)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Kernel driver in use: pcieport
> >>>>
> >>>> 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965
> [MuTIOL Media IO] [1039:0965] (rev 48)
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> >>>> Latency: 0
> >>>>
> >>>> 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513 IDE
> Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard
> [1734:1095]
> >>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 128
> >>>> Interrupt: pin ? routed to IRQ 16
> >>>> Region 0: I/O ports at 01f0 [size=8]
> >>>> Region 1: I/O ports at 03f4
> >>>> Region 2: I/O ports at 0170 [size=8]
> >>>> Region 3: I/O ports at 0374
> >>>> Region 4: I/O ports at 1c80 [size=16]
> >>>> Capabilities: [58] Power Management version 2
> >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-
> ,D2-,D3hot-,D3cold+)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Kernel driver in use: pata_sis
> >>>>
> >>>> 00:02.7 Multimedia audio controller [0401]: Silicon Integrated
> Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> >>>> Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> >>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> >>>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 173 (13000ns min, 2750ns max)
> >>>> Interrupt: pin C routed to IRQ 18
> >>>> Region 0: I/O ports at 1400 [size=256]
> >>>> Region 1: I/O ports at 1000 [size=128]
> >>>> Capabilities: [48] Power Management version 2
> >>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-,D1-
> ,D2-,D3hot+,D3cold+)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Kernel driver in use: snd_intel8x0
> >>>>
> >>>> 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1
> Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard
> [1734:1095]
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> >>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 64 (20000ns max)
> >>>> Interrupt: pin A routed to IRQ 20
> >>>> Region 0: Memory at f2000000 (32-bit, non-prefetchable)
> [size=4K]
> >>>> Kernel driver in use: ohci-pci
> >>>>
> >>>> 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1
> Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard
> [1734:1095]
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> >>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 64 (20000ns max)
> >>>> Interrupt: pin B routed to IRQ 21
> >>>> Region 0: Memory at f2001000 (32-bit, non-prefetchable)
> [size=4K]
> >>>> Kernel driver in use: ohci-pci
> >>>>
> >>>> 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 1.1
> Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 Motherboard
> [1734:1095]
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> >>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 64 (20000ns max)
> >>>> Interrupt: pin C routed to IRQ 22
> >>>> Region 0: Memory at f2002000 (32-bit, non-prefetchable)
> [size=4K]
> >>>> Kernel driver in use: ohci-pci
> >>>>
> >>>> 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB 2.0
> Controller [1039:7002] (prog-if 20 [EHCI])
> >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> >>>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> >>>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 64 (20000ns max)
> >>>> Interrupt: pin D routed to IRQ 23
> >>>> Region 0: Memory at f2003000 (32-bit, non-prefetchable)
> [size=4K]
> >>>> Capabilities: [50] Power Management version 2
> >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Kernel driver in use: ehci-pci
> >>>>
> >>>> 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182
> SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO PriP
> PriO])
> >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> >>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 64
> >>>> Interrupt: pin A routed to IRQ 17
> >>>> Region 0: I/O ports at 1cb0 [size=8]
> >>>> Region 1: I/O ports at 1ca4 [size=4]
> >>>> Region 2: I/O ports at 1ca8 [size=8]
> >>>> Region 3: I/O ports at 1ca0 [size=4]
> >>>> Region 4: I/O ports at 1c90 [size=16]
> >>>> Region 5: I/O ports at 1c00 [size=128]
> >>>> Capabilities: [58] Power Management version 2
> >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-
> ,D2-,D3hot-,D3cold+)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Kernel driver in use: sata_sis
> >>>>
> >>>> 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-PCI
> bridge [1039:000a] (prog-if 00 [Normal decode])
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 0, Cache Line Size: 64 bytes
> >>>> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> >>>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- <SERR- <PERR-
> >>>> BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
> >>>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> >>>> Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS]
> Device [1039:0000]
> >>>> Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> >>>> Address: fee0100c Data: 4181
> >>>> Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> >>>> DevCap: MaxPayload 128 bytes, PhantFunc 0
> >>>> ExtTag+ RBE-
> >>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
> Unsupported-
> >>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> >>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
> >>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+
> TransPend-
> >>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit
> Latency L0s <1us, L1 <2us
> >>>> ClockPM- Surprise- LLActRep- BwNot-
> >>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> >>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> >>>> LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+
> DLActive- BWMgmt- ABWMgmt-
> >>>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
> Surprise-
> >>>> Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> >>>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
> HPIrq- LinkChg-
> >>>> Control: AttnInd Off, PwrInd Off, Power- Interlock-
> >>>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+
> Interlock-
> >>>> Changed: MRL- PresDet- LinkState-
> >>>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
> CRSVisible-
> >>>> RootCap: CRSVisible-
> >>>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> >>>> Capabilities: [f4] Power Management version 2
> >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-
> ,D2-,D3hot+,D3cold+)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Capabilities: [100 v1] Virtual Channel
> >>>> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> >>>> Arb: Fixed- WRR32- WRR64- WRR128-
> >>>> Ctrl: ArbSelect=Fixed
> >>>> Status: InProgress-
> >>>> VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
> >>>> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128-
> WRR256-
> >>>> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> >>>> Status: NegoPending- InProgress-
> >>>> Capabilities: [130 v1] Advanced Error Reporting
> >>>> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt-
> UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> >>>> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt-
> UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> >>>> UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt-
> UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> >>>> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout-
> NonFatalErr-
> >>>> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout-
> NonFatalErr-
> >>>> AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap-
> ChkEn-
> >>>> Kernel driver in use: pcieport
> >>>>
> >>>> 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd.
> RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> >>>> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
> >>>> Interrupt: pin A routed to IRQ 19
> >>>> Region 0: I/O ports at 1800 [size=256]
> >>>> Region 1: Memory at f2004000 (32-bit, non-prefetchable)
> [size=256]
> >>>> Capabilities: [dc] Power Management version 2
> >>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-
> ,D1+,D2+,D3hot+,D3cold+)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Kernel driver in use: r8169
> >>>>
> >>>> 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8
> [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> >>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Capabilities: [80] HyperTransport: Host or Secondary Interface
> >>>> Command: WarmRst+ DblEnd- DevNum=0 ChainSide-
> HostHide+ Slave- <EOCErr- DUL-
> >>>> Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
> <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> >>>> Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
> LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> >>>> Revision ID: 1.02
> >>>> Link Frequency: 800MHz
> >>>> Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> >>>> Link Frequency Capability: 200MHz+ 300MHz- 400MHz+
> 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> >>>> Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA-
> UIDRD- ExtRS- UCnfE-
> >>>>
> >>>> 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8
> [Athlon64/Opteron] Address Map [1022:1101]
> >>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>>
> >>>> 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8
> [Athlon64/Opteron] DRAM Controller [1022:1102]
> >>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Kernel driver in use: amd64_edac
> >>>>
> >>>> 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8
> [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> >>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> >>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Kernel driver in use: k8temp
> >>>>
> >>>> 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices,
> Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v]
> [1002:9553] (prog-if 00 [VGA controller])
> >>>> Subsystem: PC Partner Limited / Sapphire Technology Device
> [174b:3092]
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> >>>> Latency: 0, Cache Line Size: 64 bytes
> >>>> Interrupt: pin A routed to IRQ 42
> >>>> Region 0: Memory at e0000000 (64-bit, prefetchable)
> [size=256M]
> >>>> Region 2: Memory at f2100000 (64-bit, non-prefetchable)
> [size=64K]
> >>>> Region 4: I/O ports at 2000 [size=256]
> >>>> [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> >>>> Capabilities: [50] Power Management version 3
> >>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-
> ,D2-,D3hot-,D3cold-)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> >>>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
> <4us, L1 unlimited
> >>>> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> >>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
> Unsupported-
> >>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> >>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
> >>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
> TransPend-
> >>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit
> Latency L0s <64ns, L1 <1us
> >>>> ClockPM- Surprise- LLActRep- BwNot-
> >>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> >>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> >>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
> DLActive- BWMgmt- ABWMgmt-
> >>>> DevCap2: Completion Timeout: Not Supported, TimeoutDis-,
> LTR-, OBFF Not Supported
> >>>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-,
> LTR-, OBFF Disabled
> >>>> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance-
> SpeedDis-
> >>>> Transmit Margin: Normal Operating Range,
> EnterModifiedCompliance- ComplianceSOS-
> >>>> Compliance De-emphasis: -6dB
> >>>> LnkSta2: Current De-emphasis Level: -6dB,
> EqualizationComplete-, EqualizationPhase1-
> >>>> EqualizationPhase2-, EqualizationPhase3-,
> LinkEqualizationRequest-
> >>>> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> >>>> Address: 00000000fee0100c Data: 41e1
> >>>> Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1
> Len=010 <?>
> >>>> Kernel driver in use: radeon
> >>>>
> >>>> 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc.
> [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> >>>> Subsystem: PC Partner Limited / Sapphire Technology Device
> [174b:aa38]
> >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> >>>> Latency: 0, Cache Line Size: 64 bytes
> >>>> Interrupt: pin B routed to IRQ 41
> >>>> Region 0: Memory at f2110000 (64-bit, non-prefetchable)
> [size=16K]
> >>>> Capabilities: [50] Power Management version 3
> >>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-
> ,D2-,D3hot-,D3cold-)
> >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> >>>> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> >>>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
> <4us, L1 unlimited
> >>>> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> >>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
> Unsupported-
> >>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> >>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
> >>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
> TransPend-
> >>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Exit
> Latency L0s <64ns, L1 <1us
> >>>> ClockPM- Surprise- LLActRep- BwNot-
> >>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> >>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> >>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
> DLActive- BWMgmt- ABWMgmt-
> >>>> DevCap2: Completion Timeout: Not Supported, TimeoutDis-,
> LTR-, OBFF Not Supported
> >>>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-,
> LTR-, OBFF Disabled
> >>>> LnkSta2: Current De-emphasis Level: -6dB,
> EqualizationComplete-, EqualizationPhase1-
> >>>> EqualizationPhase2-, EqualizationPhase3-,
> LinkEqualizationRequest-
> >>>> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> >>>> Address: 00000000fee0100c Data: 41d1
> >>>> Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1
> Len=010 <?>
> >>>> Kernel driver in use: snd_hda_intel
> >>>>
> >>>>
> >>>> Gr??e,
> >>>> Thomas
> >> Thomas can you provide output of lspci -t
> >>
> >> Also did you had a chance to test my ugly patch ?
> >>
> >> Cheers,
> >> J?r?me
> > If my ugly patch works does this quirk also work ?
> >

2014-04-28 12:52:29

by Deucher, Alexander

[permalink] [raw]
Subject: RE: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

> -----Original Message-----
> From: Deucher, Alexander
> Sent: Monday, April 28, 2014 8:50 AM
> To: Koenig, Christian; Jerome Glisse; Thomas Schwinge
> Cc: Bjorn Helgaas; [email protected]; Johannes Weiner; Mel Gorman;
> Rik van Riel; Andrea Arcangeli; Zlatko Calusic; Minchan Kim; linux-
> [email protected]; [email protected]; Andrew Morton; dri-
> [email protected]
> Subject: RE: radeon: screen garbled after page allocator change, was: Re:
> [patch v2 3/3] mm: page_alloc: fair zone allocator policy
>
> > -----Original Message-----
> > From: Koenig, Christian
> > Sent: Monday, April 28, 2014 3:30 AM
> > To: Jerome Glisse; Thomas Schwinge
> > Cc: Bjorn Helgaas; [email protected]; Johannes Weiner; Mel
> Gorman;
> > Rik van Riel; Andrea Arcangeli; Zlatko Calusic; Minchan Kim; linux-
> > [email protected]; [email protected]; Andrew Morton; Deucher,
> > Alexander; [email protected]
> > Subject: Re: radeon: screen garbled after page allocator change, was: Re:
> > [patch v2 3/3] mm: page_alloc: fair zone allocator policy
> >
> > > + /* We are living in a monstruous world in which you can have the pci
> > > + * root complex behind an hypertransport link which can not address
> > > + * anything above 32bit (well hypertransport specification says 40bits
> > > + * but hardware such as SIS761 only support 32bits).
> > That looks more like a problem with this specific chipset rather than
> > something that needs a general solution like this.
> >
> > Maybe we should rather add the PCI-ID(s) of the thing to some kind of
> > quirks table for now so that the patch isn't so invasive and we can CC
> > stable as well?
>
> IIRC, there was someone on IRC with a similar problem with a similar SiS
> chipset a while back. These SiS chipsets seem to be generally problematic.

IIRC, in the IRC case, the fix was to limit the about of physical memory in the system.

Alex

>
> Alex
>
> >
> > Just a thought,
> > Christian.
> >
> > Am 27.04.2014 21:55, schrieb Jerome Glisse:
> > > On Sat, Apr 26, 2014 at 11:31:11PM -0400, Jerome Glisse wrote:
> > >> On Thu, Apr 24, 2014 at 09:37:22AM -0400, Johannes Weiner wrote:
> > >>> Hi Thomas,
> > >>>
> > >>> On Wed, Apr 02, 2014 at 04:26:08PM +0200, Thomas Schwinge wrote:
> > >>>> Hi!
> > >>>>
> > >>>> On Fri, 2 Aug 2013 11:37:26 -0400, Johannes Weiner
> > <[email protected]> wrote:
> > >>>>> Each zone that holds userspace pages of one workload must be
> aged
> > at a
> > >>>>> speed proportional to the zone size. [...]
> > >>>>> Fix this with a very simple round robin allocator. [...]
> > >>>> This patch, adding NR_ALLOC_BATCH, eventually landed in mainline
> as
> > >>>> commit 81c0a2bb515fd4daae8cab64352877480792b515 (2013-09-11).
> > >>>>
> > >>>> I recently upgraded a Debian testing system from a 3.11 kernel to
> 3.12,
> > >>>> and it started to exhibit "strange" issues, which I then bisected to this
> > >>>> patch. I'm not saying that the patch is faulty, as it seems to be
> > >>>> working fine for everyone else, so I rather assume that something in
> a
> > >>>> (vastly?) different corner of the kernel (or my hardware?) is broken.
> > >>>> ;-)
> > >>>>
> > >>>> The issue is that when X.org/lightdm starts up, there are "garbled"
> > >>>> section on the screen, for example, rectangular boxes that are just
> > black
> > >>>> or otherwise "distorted", and/or sets of glyphs (corresponding to a
> set
> > >>>> of characters; but not all characters) are displayed as rectangular gray
> > >>>> or black boxes, and/or icons in a GNOME session are not displayed
> > >>>> properly, and so on. (Can take a snapshot if that helps?) Switching to
> > >>>> a Linux console, I can use that one fine. Switching back to X, in the
> > >>>> majority of all cases, the screen will be completely black, but with the
> > >>>> mouse cursor still rendered properly (done in hardware, I assume).
> > >>>>
> > >>>> Reverting commit 81c0a2bb515fd4daae8cab64352877480792b515, for
> > example on
> > >>>> top of v3.12, and everything is back to normal. The problem also
> > >>>> persists with a v3.14 kernel that I just built.
> > >>>>
> > >>>> I will try to figure out what's going on, but will gladly take any
> > >>>> pointers, or suggestions about how to tackle such a problem.
> > >>>>
> > >>>> The hardware is a Fujitsu Siemens Esprimo E5600, mainboard D2264-
> A1,
> > CPU
> > >>>> AMD Sempron 3000+. There is a on-board graphics thingy, but I'm
> not
> > >>>> using that; instead I put in a Sapphire Radeon HD 4350 card.
> > >>> I went over this code change repeatedly but I could not see anything
> > >>> directly that would explain it. However, this patch DOES change the
> > >>> way allocations are placed (while still respecting zone specifiers
> > >>> like __GFP_DMA etc.) and so it's possible that they unearthed a
> > >>> corruption, or a wrongly set dma mask in the drivers.
> > >>>
> > >>> Ccing the radeon driver guys. Full quote follows.
> > >>>
> > >>>> $ cat < /proc/cpuinfo
> > >>>> processor : 0
> > >>>> vendor_id : AuthenticAMD
> > >>>> cpu family : 15
> > >>>> model : 47
> > >>>> model name : AMD Sempron(tm) Processor 3000+
> > >>>> stepping : 2
> > >>>> cpu MHz : 1000.000
> > >>>> cache size : 128 KB
> > >>>> physical id : 0
> > >>>> siblings : 1
> > >>>> core id : 0
> > >>>> cpu cores : 1
> > >>>> apicid : 0
> > >>>> initial apicid : 0
> > >>>> fpu : yes
> > >>>> fpu_exception : yes
> > >>>> cpuid level : 1
> > >>>> wp : yes
> > >>>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
> > mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt
> lm
> > 3dnowext 3dnow rep_good nopl pni lahf_lm
> > >>>> bogomips : 2000.20
> > >>>> TLB size : 1024 4K pages
> > >>>> clflush size : 64
> > >>>> cache_alignment : 64
> > >>>> address sizes : 40 bits physical, 48 bits virtual
> > >>>> power management: ts fid vid ttp tm stc
> > >>>> $ sudo lspci -nn -k -vv
> > >>>> 00:00.0 Host bridge [0600]: Silicon Integrated Systems [SiS]
> 761/M761
> > Host [1039:0761] (rev 01)
> > >>>> Subsystem: Fujitsu Technology Solutions D2030-A1
> Motherboard
> > [1734:1099]
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > >>>> Latency: 64
> > >>>> Region 0: Memory at f0000000 (32-bit, non-prefetchable)
> > [size=32M]
> > >>>> Capabilities: [a0] AGP version 3.0
> > >>>> Status: RQ=32 Iso- ArqSz=2 Cal=3 SBA+ ITACoh- GART64-
> > HTrans- 64bit- FW- AGP3+ Rate=x4,x8
> > >>>> Command: RQ=1 ArqSz=0 Cal=0 SBA+ AGP- GART64- 64bit-
> > FW- Rate=<none>
> > >>>> Capabilities: [d0] HyperTransport: Slave or Primary Interface
> > >>>> Command: BaseUnitID=0 UnitCnt=17 MastHost- DefDir-
> DUL-
> > >>>> Link Control 0: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
> > <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > >>>> Link Config 0: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
> > LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > >>>> Link Control 1: CFlE- CST- CFE- <LkFail+ Init- EOC+ TXO+
> > <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > >>>> Link Config 1: MLWI=N/C DwFcIn- MLWO=N/C DwFcOut-
> > LWI=N/C DwFcInEn- LWO=N/C DwFcOutEn-
> > >>>> Revision ID: 1.05
> > >>>> Link Frequency 0: 800MHz
> > >>>> Link Error 0: <Prot- <Ovfl- <EOC- CTLTm-
> > >>>> Link Frequency Capability 0: 200MHz+ 300MHz- 400MHz+
> > 500MHz- 600MHz+ 800MHz+ 1.0GHz+ 1.2GHz+ 1.4GHz- 1.6GHz- Vend-
> > >>>> Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT-
> 64bA+
> > UIDRD-
> > >>>> Link Frequency 1: 200MHz
> > >>>> Link Error 1: <Prot- <Ovfl- <EOC- CTLTm-
> > >>>> Link Frequency Capability 1: 200MHz- 300MHz- 400MHz-
> > 500MHz- 600MHz- 800MHz- 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > >>>> Error Handling: PFlE- OFlE- PFE- OFE- EOCFE- RFE- CRCFE-
> > SERRFE- CF- RE- PNFE- ONFE- EOCNFE- RNFE- CRCNFE- SERRNFE-
> > >>>> Prefetchable memory behind bridge Upper: 00-00
> > >>>> Bus Number: 00
> > >>>> Capabilities: [f0] HyperTransport: Interrupt Discovery and
> > Configuration
> > >>>> Capabilities: [5c] HyperTransport: Revision ID: 1.05
> > >>>> Kernel driver in use: agpgart-amd64
> > >>>>
> > >>>> 00:01.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-
> PCI
> > bridge [1039:0004] (prog-if 00 [Normal decode])
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 0, Cache Line Size: 64 bytes
> > >>>> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> > >>>> I/O behind bridge: 00002000-00002fff
> > >>>> Memory behind bridge: f2100000-f21fffff
> > >>>> Prefetchable memory behind bridge: e0000000-efffffff
> > >>>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast
> >TAbort-
> > <TAbort- <MAbort+ <SERR- <PERR-
> > >>>> BridgeCtl: Parity+ SERR+ NoISA+ VGA+ MAbort- >Reset-
> > FastB2B-
> > >>>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > >>>> Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > >>>> DevCap: MaxPayload 128 bytes, PhantFunc 0
> > >>>> ExtTag+ RBE-
> > >>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
> > Unsupported-
> > >>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > >>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
> > >>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq+ AuxPwr+
> > TransPend-
> > >>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1,
> Exit
> > Latency L0s <1us, L1 <2us
> > >>>> ClockPM- Surprise- LLActRep+ BwNot-
> > >>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > >>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > >>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
> > DLActive+ BWMgmt- ABWMgmt-
> > >>>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
> > Surprise-
> > >>>> Slot #0, PowerLimit 75.000W; Interlock- NoCompl-
> > >>>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
> > HPIrq- LinkChg-
> > >>>> Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > >>>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+
> > Interlock-
> > >>>> Changed: MRL- PresDet- LinkState-
> > >>>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
> > CRSVisible-
> > >>>> RootCap: CRSVisible-
> > >>>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > >>>> Capabilities: [bc] HyperTransport: MSI Mapping Enable- Fixed+
> > >>>> Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit-
> > >>>> Address: 00000000 Data: 0000
> > >>>> Capabilities: [f4] Power Management version 2
> > >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-
> > ,D2-,D3hot+,D3cold+)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Kernel driver in use: pcieport
> > >>>>
> > >>>> 00:02.0 ISA bridge [0601]: Silicon Integrated Systems [SiS] SiS965
> > [MuTIOL Media IO] [1039:0965] (rev 48)
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > >>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > >>>> Latency: 0
> > >>>>
> > >>>> 00:02.5 IDE interface [0101]: Silicon Integrated Systems [SiS] 5513
> IDE
> > Controller [1039:5513] (rev 01) (prog-if 80 [Master])
> > >>>> Subsystem: Fujitsu Technology Solutions D2030-A1
> Motherboard
> > [1734:1095]
> > >>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 128
> > >>>> Interrupt: pin ? routed to IRQ 16
> > >>>> Region 0: I/O ports at 01f0 [size=8]
> > >>>> Region 1: I/O ports at 03f4
> > >>>> Region 2: I/O ports at 0170 [size=8]
> > >>>> Region 3: I/O ports at 0374
> > >>>> Region 4: I/O ports at 1c80 [size=16]
> > >>>> Capabilities: [58] Power Management version 2
> > >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-
> > ,D2-,D3hot-,D3cold+)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Kernel driver in use: pata_sis
> > >>>>
> > >>>> 00:02.7 Multimedia audio controller [0401]: Silicon Integrated
> > Systems [SiS] SiS7012 AC'97 Sound Controller [1039:7012] (rev a0)
> > >>>> Subsystem: Fujitsu Technology Solutions Device [1734:109c]
> > >>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 173 (13000ns min, 2750ns max)
> > >>>> Interrupt: pin C routed to IRQ 18
> > >>>> Region 0: I/O ports at 1400 [size=256]
> > >>>> Region 1: I/O ports at 1000 [size=128]
> > >>>> Capabilities: [48] Power Management version 2
> > >>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=55mA PME(D0-
> ,D1-
> > ,D2-,D3hot+,D3cold+)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Kernel driver in use: snd_intel8x0
> > >>>>
> > >>>> 00:03.0 USB controller [0c03]: Silicon Integrated Systems [SiS] USB
> 1.1
> > Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > >>>> Subsystem: Fujitsu Technology Solutions D2030-A1
> Motherboard
> > [1734:1095]
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > >>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 64 (20000ns max)
> > >>>> Interrupt: pin A routed to IRQ 20
> > >>>> Region 0: Memory at f2000000 (32-bit, non-prefetchable)
> > [size=4K]
> > >>>> Kernel driver in use: ohci-pci
> > >>>>
> > >>>> 00:03.1 USB controller [0c03]: Silicon Integrated Systems [SiS] USB
> 1.1
> > Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > >>>> Subsystem: Fujitsu Technology Solutions D2030-A1
> Motherboard
> > [1734:1095]
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > >>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 64 (20000ns max)
> > >>>> Interrupt: pin B routed to IRQ 21
> > >>>> Region 0: Memory at f2001000 (32-bit, non-prefetchable)
> > [size=4K]
> > >>>> Kernel driver in use: ohci-pci
> > >>>>
> > >>>> 00:03.2 USB controller [0c03]: Silicon Integrated Systems [SiS] USB
> 1.1
> > Controller [1039:7001] (rev 0f) (prog-if 10 [OHCI])
> > >>>> Subsystem: Fujitsu Technology Solutions D2030-A1
> Motherboard
> > [1734:1095]
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > >>>> Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 64 (20000ns max)
> > >>>> Interrupt: pin C routed to IRQ 22
> > >>>> Region 0: Memory at f2002000 (32-bit, non-prefetchable)
> > [size=4K]
> > >>>> Kernel driver in use: ohci-pci
> > >>>>
> > >>>> 00:03.3 USB controller [0c03]: Silicon Integrated Systems [SiS] USB
> 2.0
> > Controller [1039:7002] (prog-if 20 [EHCI])
> > >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > >>>> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 64 (20000ns max)
> > >>>> Interrupt: pin D routed to IRQ 23
> > >>>> Region 0: Memory at f2003000 (32-bit, non-prefetchable)
> > [size=4K]
> > >>>> Capabilities: [50] Power Management version 2
> > >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
> > PME(D0+,D1-,D2-,D3hot+,D3cold+)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Kernel driver in use: ehci-pci
> > >>>>
> > >>>> 00:05.0 IDE interface [0101]: Silicon Integrated Systems [SiS] 182
> > SATA/RAID Controller [1039:0182] (rev 01) (prog-if 8f [Master SecP SecO
> PriP
> > PriO])
> > >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1095]
> > >>>> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 64
> > >>>> Interrupt: pin A routed to IRQ 17
> > >>>> Region 0: I/O ports at 1cb0 [size=8]
> > >>>> Region 1: I/O ports at 1ca4 [size=4]
> > >>>> Region 2: I/O ports at 1ca8 [size=8]
> > >>>> Region 3: I/O ports at 1ca0 [size=4]
> > >>>> Region 4: I/O ports at 1c90 [size=16]
> > >>>> Region 5: I/O ports at 1c00 [size=128]
> > >>>> Capabilities: [58] Power Management version 2
> > >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-
> > ,D2-,D3hot-,D3cold+)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Kernel driver in use: sata_sis
> > >>>>
> > >>>> 00:06.0 PCI bridge [0604]: Silicon Integrated Systems [SiS] PCI-to-
> PCI
> > bridge [1039:000a] (prog-if 00 [Normal decode])
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 0, Cache Line Size: 64 bytes
> > >>>> Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
> > >>>> Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast
> >TAbort-
> > <TAbort- <MAbort- <SERR- <PERR-
> > >>>> BridgeCtl: Parity+ SERR+ NoISA+ VGA- MAbort- >Reset-
> FastB2B-
> > >>>> PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
> > >>>> Capabilities: [b0] Subsystem: Silicon Integrated Systems [SiS]
> > Device [1039:0000]
> > >>>> Capabilities: [c0] MSI: Enable+ Count=1/1 Maskable- 64bit-
> > >>>> Address: fee0100c Data: 4181
> > >>>> Capabilities: [d0] Express (v1) Root Port (Slot+), MSI 00
> > >>>> DevCap: MaxPayload 128 bytes, PhantFunc 0
> > >>>> ExtTag+ RBE-
> > >>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
> > Unsupported-
> > >>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > >>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
> > >>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+
> > TransPend-
> > >>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1,
> Exit
> > Latency L0s <1us, L1 <2us
> > >>>> ClockPM- Surprise- LLActRep- BwNot-
> > >>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> > >>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > >>>> LnkSta: Speed 2.5GT/s, Width x0, TrErr- Train- SlotClk+
> > DLActive- BWMgmt- ABWMgmt-
> > >>>> SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug-
> > Surprise-
> > >>>> Slot #0, PowerLimit 0.000W; Interlock- NoCompl-
> > >>>> SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt-
> > HPIrq- LinkChg-
> > >>>> Control: AttnInd Off, PwrInd Off, Power- Interlock-
> > >>>> SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+
> > Interlock-
> > >>>> Changed: MRL- PresDet- LinkState-
> > >>>> RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna-
> > CRSVisible-
> > >>>> RootCap: CRSVisible-
> > >>>> RootSta: PME ReqID 0000, PMEStatus- PMEPending-
> > >>>> Capabilities: [f4] Power Management version 2
> > >>>> Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-
> > ,D2-,D3hot+,D3cold+)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Capabilities: [100 v1] Virtual Channel
> > >>>> Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
> > >>>> Arb: Fixed- WRR32- WRR64- WRR128-
> > >>>> Ctrl: ArbSelect=Fixed
> > >>>> Status: InProgress-
> > >>>> VC0: Caps: PATOffset=00 MaxTimeSlots=1
> RejSnoopTrans-
> > >>>> Arb: Fixed- WRR32- WRR64- WRR128- TWRR128-
> > WRR256-
> > >>>> Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
> > >>>> Status: NegoPending- InProgress-
> > >>>> Capabilities: [130 v1] Advanced Error Reporting
> > >>>> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt-
> > UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > >>>> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt-
> > UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
> > >>>> UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt-
> > UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
> > >>>> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout-
> > NonFatalErr-
> > >>>> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout-
> > NonFatalErr-
> > >>>> AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap-
> > ChkEn-
> > >>>> Kernel driver in use: pcieport
> > >>>>
> > >>>> 00:09.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd.
> > RTL8169 PCI Gigabit Ethernet Controller [10ec:8169] (rev 10)
> > >>>> Subsystem: Fujitsu Technology Solutions D2030-A1 [1734:1091]
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
> > >>>> Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32
> bytes
> > >>>> Interrupt: pin A routed to IRQ 19
> > >>>> Region 0: I/O ports at 1800 [size=256]
> > >>>> Region 1: Memory at f2004000 (32-bit, non-prefetchable)
> > [size=256]
> > >>>> Capabilities: [dc] Power Management version 2
> > >>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-
> > ,D1+,D2+,D3hot+,D3cold+)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Kernel driver in use: r8169
> > >>>>
> > >>>> 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8
> > [Athlon64/Opteron] HyperTransport Technology Configuration [1022:1100]
> > >>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Capabilities: [80] HyperTransport: Host or Secondary Interface
> > >>>> Command: WarmRst+ DblEnd- DevNum=0 ChainSide-
> > HostHide+ Slave- <EOCErr- DUL-
> > >>>> Link Control: CFlE- CST- CFE- <LkFail- Init+ EOC- TXO-
> > <CRCErr=0 IsocEn- LSEn- ExtCTL- 64b-
> > >>>> Link Config: MLWI=16bit DwFcIn- MLWO=16bit DwFcOut-
> > LWI=16bit DwFcInEn- LWO=16bit DwFcOutEn-
> > >>>> Revision ID: 1.02
> > >>>> Link Frequency: 800MHz
> > >>>> Link Error: <Prot- <Ovfl- <EOC- CTLTm-
> > >>>> Link Frequency Capability: 200MHz+ 300MHz- 400MHz+
> > 500MHz- 600MHz+ 800MHz+ 1.0GHz- 1.2GHz- 1.4GHz- 1.6GHz- Vend-
> > >>>> Feature Capability: IsocFC- LDTSTOP+ CRCTM- ECTLT- 64bA-
> > UIDRD- ExtRS- UCnfE-
> > >>>>
> > >>>> 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8
> > [Athlon64/Opteron] Address Map [1022:1101]
> > >>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > >>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >TAbort-
> > <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>>
> > >>>> 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8
> > [Athlon64/Opteron] DRAM Controller [1022:1102]
> > >>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > >>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >TAbort-
> > <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Kernel driver in use: amd64_edac
> > >>>>
> > >>>> 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] K8
> > [Athlon64/Opteron] Miscellaneous Control [1022:1103]
> > >>>> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
> > >>>> Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> >TAbort-
> > <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Kernel driver in use: k8temp
> > >>>>
> > >>>> 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices,
> > Inc. [AMD/ATI] RV710/M92 [Mobility Radeon HD 4530/4570/545v]
> > [1002:9553] (prog-if 00 [VGA controller])
> > >>>> Subsystem: PC Partner Limited / Sapphire Technology Device
> > [174b:3092]
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> > >TAbort- <TAbort- <MAbort+ >SERR- <PERR- INTx-
> > >>>> Latency: 0, Cache Line Size: 64 bytes
> > >>>> Interrupt: pin A routed to IRQ 42
> > >>>> Region 0: Memory at e0000000 (64-bit, prefetchable)
> > [size=256M]
> > >>>> Region 2: Memory at f2100000 (64-bit, non-prefetchable)
> > [size=64K]
> > >>>> Region 4: I/O ports at 2000 [size=256]
> > >>>> [virtual] Expansion ROM at f2120000 [disabled] [size=128K]
> > >>>> Capabilities: [50] Power Management version 3
> > >>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-
> ,D1-
> > ,D2-,D3hot-,D3cold-)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > >>>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
> > <4us, L1 unlimited
> > >>>> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > >>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
> > Unsupported-
> > >>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > >>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
> > >>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
> > TransPend-
> > >>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1,
> Exit
> > Latency L0s <64ns, L1 <1us
> > >>>> ClockPM- Surprise- LLActRep- BwNot-
> > >>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > >>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > >>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
> > DLActive- BWMgmt- ABWMgmt-
> > >>>> DevCap2: Completion Timeout: Not Supported,
> TimeoutDis-,
> > LTR-, OBFF Not Supported
> > >>>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-,
> > LTR-, OBFF Disabled
> > >>>> LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance-
> > SpeedDis-
> > >>>> Transmit Margin: Normal Operating Range,
> > EnterModifiedCompliance- ComplianceSOS-
> > >>>> Compliance De-emphasis: -6dB
> > >>>> LnkSta2: Current De-emphasis Level: -6dB,
> > EqualizationComplete-, EqualizationPhase1-
> > >>>> EqualizationPhase2-, EqualizationPhase3-,
> > LinkEqualizationRequest-
> > >>>> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > >>>> Address: 00000000fee0100c Data: 41e1
> > >>>> Capabilities: [100 v1] Vendor Specific Information: ID=0001
> Rev=1
> > Len=010 <?>
> > >>>> Kernel driver in use: radeon
> > >>>>
> > >>>> 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc.
> > [AMD/ATI] RV710/730 HDMI Audio [Radeon HD 4000 series] [1002:aa38]
> > >>>> Subsystem: PC Partner Limited / Sapphire Technology Device
> > [174b:aa38]
> > >>>> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV-
> > VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> > >>>> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast
> > >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> > >>>> Latency: 0, Cache Line Size: 64 bytes
> > >>>> Interrupt: pin B routed to IRQ 41
> > >>>> Region 0: Memory at f2110000 (64-bit, non-prefetchable)
> > [size=16K]
> > >>>> Capabilities: [50] Power Management version 3
> > >>>> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-
> ,D1-
> > ,D2-,D3hot-,D3cold-)
> > >>>> Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> > >>>> Capabilities: [58] Express (v2) Legacy Endpoint, MSI 00
> > >>>> DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s
> > <4us, L1 unlimited
> > >>>> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> > >>>> DevCtl: Report errors: Correctable- Non-Fatal- Fatal-
> > Unsupported-
> > >>>> RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
> > >>>> MaxPayload 128 bytes, MaxReadReq 128 bytes
> > >>>> DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr-
> > TransPend-
> > >>>> LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1,
> Exit
> > Latency L0s <64ns, L1 <1us
> > >>>> ClockPM- Surprise- LLActRep- BwNot-
> > >>>> LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
> > >>>> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> > >>>> LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+
> > DLActive- BWMgmt- ABWMgmt-
> > >>>> DevCap2: Completion Timeout: Not Supported,
> TimeoutDis-,
> > LTR-, OBFF Not Supported
> > >>>> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-,
> > LTR-, OBFF Disabled
> > >>>> LnkSta2: Current De-emphasis Level: -6dB,
> > EqualizationComplete-, EqualizationPhase1-
> > >>>> EqualizationPhase2-, EqualizationPhase3-,
> > LinkEqualizationRequest-
> > >>>> Capabilities: [a0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> > >>>> Address: 00000000fee0100c Data: 41d1
> > >>>> Capabilities: [100 v1] Vendor Specific Information: ID=0001
> Rev=1
> > Len=010 <?>
> > >>>> Kernel driver in use: snd_hda_intel
> > >>>>
> > >>>>
> > >>>> Gr??e,
> > >>>> Thomas
> > >> Thomas can you provide output of lspci -t
> > >>
> > >> Also did you had a chance to test my ugly patch ?
> > >>
> > >> Cheers,
> > >> J?r?me
> > > If my ugly patch works does this quirk also work ?
> > >

2014-06-16 07:12:17

by Thomas Schwinge

[permalink] [raw]
Subject: Re: radeon: screen garbled after page allocator change, was: Re: [patch v2 3/3] mm: page_alloc: fair zone allocator policy

Hi!

On Mon, 28 Apr 2014 10:09:17 +0200, I wrote:
> On Sun, 27 Apr 2014 15:55:29 -0400, Jerome Glisse <[email protected]> wrote:
> > If my ugly patch works does this quirk also work ?
>
> Unfortunately they both don't; see my other email,
> <http://news.gmane.org/find-root.php?message_id=%3C87sioxq3rx.fsf%40schwinge.name%3E>.

> [...] hacked around as follows: [...]

> If needed, I can try to capture more data, but someone who has knowledge
> of PCI bus architecture and Linux kernel code (so, not me), might
> probably already see what's wrong.

The problem "solved itself": the machine recently died of hardware
failure. ;-|


Grüße,
Thomas


Attachments:
(No filename) (472.00 B)