* [PATCH] perf: Power7 Update testing ABI to list CPI-stack events
From: Sukadev Bhattiprolu @ 2013-04-06 17:06 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: linuxppc-dev, Paul Mackerras, linux-kernel,
Arnaldo Carvalho de Melo
In-Reply-To: <20130406164803.GA408@us.ibm.com>
>From 03a785f9d19249d2e524f31d8ead539f15d28a9f Mon Sep 17 00:00:00 2001
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Date: Sat, 6 Apr 2013 09:52:05 -0700
Subject: [PATCH] perf: Power7 Update testing ABI to list CPI-stack events
Following patch added several Power7 events into /sys/devices/cpu/events.
Document those events in the testing ABI.
https://lists.ozlabs.org/pipermail/linuxppc-dev/2013-April/105167.html
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
---
.../testing/sysfs-bus-event_source-devices-events | 32 ++++++++++++++++---
1 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events
index 0adeb52..8b25ffb 100644
--- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-events
+++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-events
@@ -27,14 +27,36 @@ Description: Generic performance monitoring events
"basename".
-What: /sys/devices/cpu/events/PM_LD_MISS_L1
- /sys/devices/cpu/events/PM_LD_REF_L1
- /sys/devices/cpu/events/PM_CYC
+What: /sys/devices/cpu/events/PM_1PLUS_PPC_CMPL
/sys/devices/cpu/events/PM_BRU_FIN
- /sys/devices/cpu/events/PM_GCT_NOSLOT_CYC
/sys/devices/cpu/events/PM_BRU_MPRED
- /sys/devices/cpu/events/PM_INST_CMPL
/sys/devices/cpu/events/PM_CMPLU_STALL
+ /sys/devices/cpu/events/PM_CMPLU_STALL_BRU
+ /sys/devices/cpu/events/PM_CMPLU_STALL_DCACHE_MISS
+ /sys/devices/cpu/events/PM_CMPLU_STALL_DFU
+ /sys/devices/cpu/events/PM_CMPLU_STALL_DIV
+ /sys/devices/cpu/events/PM_CMPLU_STALL_ERAT_MISS
+ /sys/devices/cpu/events/PM_CMPLU_STALL_FXU
+ /sys/devices/cpu/events/PM_CMPLU_STALL_IFU
+ /sys/devices/cpu/events/PM_CMPLU_STALL_LSU
+ /sys/devices/cpu/events/PM_CMPLU_STALL_REJECT
+ /sys/devices/cpu/events/PM_CMPLU_STALL_SCALAR
+ /sys/devices/cpu/events/PM_CMPLU_STALL_SCALAR_LONG
+ /sys/devices/cpu/events/PM_CMPLU_STALL_STORE
+ /sys/devices/cpu/events/PM_CMPLU_STALL_THRD
+ /sys/devices/cpu/events/PM_CMPLU_STALL_VECTOR
+ /sys/devices/cpu/events/PM_CMPLU_STALL_VECTOR_LONG
+ /sys/devices/cpu/events/PM_CYC
+ /sys/devices/cpu/events/PM_GCT_NOSLOT_BR_MPRED
+ /sys/devices/cpu/events/PM_GCT_NOSLOT_BR_MPRED_IC_MISS
+ /sys/devices/cpu/events/PM_GCT_NOSLOT_CYC
+ /sys/devices/cpu/events/PM_GCT_NOSLOT_IC_MISS
+ /sys/devices/cpu/events/PM_GRP_CMPL
+ /sys/devices/cpu/events/PM_INST_CMPL
+ /sys/devices/cpu/events/PM_LD_MISS_L1
+ /sys/devices/cpu/events/PM_LD_REF_L1
+ /sys/devices/cpu/events/PM_RUN_CYC
+ /sys/devices/cpu/events/PM_RUN_INST_CMPL
Date: 2013/01/08
--
1.7.1
^ permalink raw reply related
* RE: [PATCH 08/17] powerpc/85xx: add support to JOG feature using cpufreq interface
From: Tang Yuantian-B29983 @ 2013-04-07 2:30 UTC (permalink / raw)
To: Zhao Chenhui-B35336, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <1364994565-16010-8-git-send-email-chenhui.zhao@freescale.com>
QWxzbyBzZW5kIHRoaXMgcGF0Y2ggdG8gY3B1ZnJlcUB2Z2VyLmtlcm5lbC5vcmcgYW5kIGxpbnV4
LXBtQHZnZXIua2VybmVsLm9yZw0KQW5kIGJldHRlciB0byByZWJhc2UgaXQgb24gZ2l0Oi8vZ2l0
Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3JhZmFlbC9saW51eC1wbS5naXQN
Cg0KVGhhbmtzLA0KWXVhbnRpYW4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG
cm9tOiBMaW51eHBwYy1kZXYgW21haWx0bzpsaW51eHBwYy1kZXYtDQo+IGJvdW5jZXMrYjI5OTgz
PWZyZWVzY2FsZS5jb21AbGlzdHMub3psYWJzLm9yZ10gT24gQmVoYWxmIE9mIFpoYW8gQ2hlbmh1
aQ0KPiBTZW50OiAyMDEzxOo01MIzyNUgMjE6MDkNCj4gVG86IGxpbnV4cHBjLWRldkBsaXN0cy5v
emxhYnMub3JnDQo+IFN1YmplY3Q6IFtQQVRDSCAwOC8xN10gcG93ZXJwYy84NXh4OiBhZGQgc3Vw
cG9ydCB0byBKT0cgZmVhdHVyZSB1c2luZw0KPiBjcHVmcmVxIGludGVyZmFjZQ0KPiANCj4gRnJv
bTogY2hlbmh1aSB6aGFvIDxjaGVuaHVpLnpoYW9AZnJlZXNjYWxlLmNvbT4NCj4gDQo+IFNvbWUg
TVBDODV4eCBTb0NzIGxpa2UgTVBDODUzNiBhbmQgUDEwMjIgaGF2ZSBhIEpPRyBmZWF0dXJlLCB3
aGljaA0KPiBwcm92aWRlcyBhIGR5bmFtaWMgbWVjaGFuaXNtIHRvIGxvd2VyIG9yIHJhaXNlIHRo
ZSBDUFUgY29yZSBjbG9jayBhdA0KPiBydW50aW1lLg0KPiANCj4gVGhpcyBwYXRjaCBhZGRzIHRo
ZSBzdXBwb3J0IHRvIGNoYW5nZSBDUFUgZnJlcXVlbmN5IHVzaW5nIHRoZSBzdGFuZGFyZA0KPiBj
cHVmcmVxIGludGVyZmFjZS4gVGhlIHJhdGlvIENPUkUgdG8gQ0NCIGNhbiBiZSAxOjEoZXhjZXB0
IE1QQzg1MzYpLCAzOjIsDQo+IDI6MSwgNToyLCAzOjEsIDc6MiBhbmQgNDoxLg0KPiANCj4gVHdv
IENQVSBjb3JlcyBvbiBQMTAyMiBtdXN0IG5vdCBpbiB0aGUgbG93IHBvd2VyIHN0YXRlIGR1cmlu
ZyB0aGUNCj4gZnJlcXVlbmN5IHRyYW5zaXRpb24uIFRoZSBkcml2ZXIgdXNlcyBhIGZsYWcgdG8g
bWVldCB0aGUgcmVxdWlyZW1lbnQuDQo+IA0KPiBUaGUgam9nIG1vZGUgZnJlcXVlbmN5IHRyYW5z
aXRpb24gcHJvY2VzcyBvbiB0aGUgTVBDODUzNiBpcyBzaW1pbGFyIHRvDQo+IHRoZSBkZWVwIHNs
ZWVwIHByb2Nlc3MuIFRoZSBkcml2ZXIgbmVlZCBzYXZlIHRoZSBDUFUgc3RhdGUgYW5kIHJlc3Rv
cmUgaXQNCj4gYWZ0ZXIgQ1BVIHdhcm0gcmVzZXQuDQo+IA0KPiBOb3RlOg0KPiAgKiBUaGUgSS9P
IHBlcmlwaGVyYWxzIHN1Y2ggYXMgUENJZSBhbmQgZVRTRUMgbWF5IGxvc2UgcGFja2V0cyBkdXJp
bmcNCj4gICAgdGhlIGpvZyBtb2RlIGZyZXF1ZW5jeSB0cmFuc2l0aW9uLg0KPiAgKiBUaGUgZHJp
dmVyIGRvZXNuJ3Qgc3VwcG9ydCBNUEM4NTM2IFJldiAxLjAgZHVlIHRvIGEgSk9HIGVycmF0dW0u
DQo+ICAgIFN1YnNlcXVlbnQgcmV2aXNpb25zIG9mIE1QQzg1MzYgaGF2ZSBjb3JyZWN0ZWQgdGhl
IGVycmF0dW0uDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2Nh
bGUuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPg0K
PiBTaWduZWQtb2ZmLWJ5OiBKZXJyeSBIdWFuZyA8Q2hhbmctTWluZy5IdWFuZ0BmcmVlc2NhbGUu
Y29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBaaGFvIENoZW5odWkgPGNoZW5odWkuemhhb0BmcmVlc2Nh
bGUuY29tPg0KPiAtLS0NCj4gIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9NYWtlZmlsZSB8
ICAgIDEgKw0KPiAgYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfc29jLmggICAgICAgIHwgICAgNSAr
DQo+ICBkcml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5wb3dlcnBjICAgICAgfCAgIDEwICsNCj4gIGRy
aXZlcnMvY3B1ZnJlcS9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgIDEgKw0KPiAgZHJpdmVycy9j
cHVmcmVxL2NwdWZyZXEtam9nLmMgICAgICAgIHwgIDQxNg0KPiArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQo+ICBpbmNsdWRlL2xpbnV4L2NwdS5oICAgICAgICAgICAgICAgICAg
fCAgICA0ICsNCj4gIGtlcm5lbC9jcHUuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjAg
KysrLS0tDQo+ICA3IGZpbGVzIGNoYW5nZWQsIDQ2NyBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlv
bnMoLSkgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBkcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS1qb2cu
Yw0KPiANCj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9NYWtlZmls
ZQ0KPiBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODV4eC9NYWtlZmlsZQ0KPiBpbmRleCAyZjQ3
MTNmLi40OTQ2YmU3IDEwMDY0NA0KPiAtLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgv
TWFrZWZpbGUNCj4gKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L01ha2VmaWxlDQo+
IEBAIC0zLDYgKzMsNyBAQA0KPiAgIw0KPiAgb2JqLSQoQ09ORklHX1NNUCkgKz0gc21wLm8NCj4g
IG9iai0kKENPTkZJR19GU0xfUE1DKQkrPSBzbGVlcC5vDQo+ICtvYmotJChDT05GSUdfTVBDODV4
eF9DUFVGUkVRKSArPSBzbGVlcC5vDQo+IA0KPiAgb2JqLXkgKz0gY29tbW9uLm8NCj4gDQo+IGRp
ZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9zb2MuaA0KPiBiL2FyY2gvcG93ZXJw
Yy9zeXNkZXYvZnNsX3NvYy5oIGluZGV4IDI5YTg3ZWUuLmI3ZDVlZjcgMTAwNjQ0DQo+IC0tLSBh
L2FyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX3NvYy5oDQo+ICsrKyBiL2FyY2gvcG93ZXJwYy9zeXNk
ZXYvZnNsX3NvYy5oDQo+IEBAIC02Miw1ICs2MiwxMCBAQCB2b2lkIGZzbF9odl9oYWx0KHZvaWQp
Ow0KPiAgICogY29kZSBjYW4gYmUgY29tcGF0aWJsZSB3aXRoIGJvdGggMzItYml0ICYgMzYtYml0
Lg0KPiAgICovDQo+ICBleHRlcm4gdm9pZCBtcGM4NXh4X2VudGVyX2RlZXBfc2xlZXAodTY0IGNj
c3JiYXIsIHUzMiBwb3dtZ3RyZXEpOw0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgbXBjODV4
eF9lbnRlcl9qb2codTY0IGNjc3JiYXIsIHUzMiBwb3dtZ3RyZXEpIHsNCj4gKwltcGM4NXh4X2Vu
dGVyX2RlZXBfc2xlZXAoY2NzcmJhciwgcG93bWd0cmVxKTsgfQ0KPiAgI2VuZGlmDQo+ICAjZW5k
aWYNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLnBvd2VycGMNCj4gYi9k
cml2ZXJzL2NwdWZyZXEvS2NvbmZpZy5wb3dlcnBjIGluZGV4IGU3Njk5MmYuLmM0N2E2NjIgMTAw
NjQ0DQo+IC0tLSBhL2RyaXZlcnMvY3B1ZnJlcS9LY29uZmlnLnBvd2VycGMNCj4gKysrIGIvZHJp
dmVycy9jcHVmcmVxL0tjb25maWcucG93ZXJwYw0KPiBAQCAtNSwzICs1LDEzIEBAIGNvbmZpZyBD
UFVfRlJFUV9NQVBMRQ0KPiAgCWhlbHANCj4gIAkgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBmcmVx
dWVuY3kgc3dpdGNoaW5nIG9uIE1hcGxlIDk3MEZYDQo+ICAJICBFdmFsdWF0aW9uIEJvYXJkIGFu
ZCBjb21wYXRpYmxlIGJvYXJkcyAoSUJNIEpTMnggYmxhZGVzKS4NCj4gKw0KPiArY29uZmlnIE1Q
Qzg1eHhfQ1BVRlJFUQ0KPiArCWJvb2wgIlN1cHBvcnQgZm9yIEZyZWVzY2FsZSBNUEM4NXh4IENQ
VSBmcmVxIg0KPiArCWRlcGVuZHMgb24gUFBDXzg1eHggJiYgUFBDMzIgJiYgIVBQQ19FNTAwTUMN
Cj4gKwlzZWxlY3QgQ1BVX0ZSRVFfVEFCTEUNCj4gKwloZWxwDQo+ICsJICBUaGlzIGFkZHMgc3Vw
cG9ydCBmb3IgZHluYW1pYyBmcmVxdWVuY3kgc3dpdGNoaW5nIG9uDQo+ICsJICBGcmVlc2NhbGUg
TVBDODV4eCBieSBjcHVmcmVxIGludGVyZmFjZS4gTVBDODUzNiBhbmQgUDEwMjINCj4gKwkgIGhh
dmUgYSBKT0cgZmVhdHVyZSwgd2hpY2ggcHJvdmlkZXMgYSBkeW5hbWljIG1lY2hhbmlzbQ0KPiAr
CSAgdG8gbG93ZXIgb3IgcmFpc2UgdGhlIENQVSBjb3JlIGNsb2NrIGF0IHJ1bnRpbWUuDQo+IGRp
ZmYgLS1naXQgYS9kcml2ZXJzL2NwdWZyZXEvTWFrZWZpbGUgYi9kcml2ZXJzL2NwdWZyZXEvTWFr
ZWZpbGUgaW5kZXgNCj4gODYzZmQxOC4uNjI4ZmEwZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9j
cHVmcmVxL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvY3B1ZnJlcS9NYWtlZmlsZQ0KPiBAQCAt
NjEsMyArNjEsNCBAQCBvYmotJChDT05GSUdfQVJNX0lNWDZRX0NQVUZSRVEpCQkrPSBpbXg2cS0N
Cj4gY3B1ZnJlcS5vDQo+IA0KPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ICMjIyMjIyMjIw0KPiAgIyBQ
b3dlclBDIHBsYXRmb3JtIGRyaXZlcnMNCj4gIG9iai0kKENPTkZJR19DUFVfRlJFUV9NQVBMRSkJ
CSs9IG1hcGxlLWNwdWZyZXEubw0KPiArb2JqLSQoQ09ORklHX01QQzg1eHhfQ1BVRlJFUSkJCSs9
IGNwdWZyZXEtam9nLm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxLWpv
Zy5jIGIvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEtDQo+IGpvZy5jIG5ldyBmaWxlIG1vZGUgMTAw
NjQ0IGluZGV4IDAwMDAwMDAuLjU2NTZkNDgNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2
ZXJzL2NwdWZyZXEvY3B1ZnJlcS1qb2cuYw0KPiBAQCAtMCwwICsxLDQxNiBAQA0KPiArLyoNCj4g
KyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEyIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMu
DQo+ICsgKiBBdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+DQo+ICsgKiBN
b2RpZmllcjogQ2hlbmh1aSBaaGFvIDxjaGVuaHVpLnpoYW9AZnJlZXNjYWxlLmNvbT4NCj4gKyAq
DQo+ICsgKiBUaGUgY3B1ZnJlcSBkcml2ZXIgaXMgZm9yIEZyZWVzY2FsZSA4NXh4IHByb2Nlc3Nv
ciwNCj4gKyAqIGJhc2VkIG9uIGFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9jYmVfY3B1ZnJl
cS5jDQo+ICsgKiAoQykgQ29weXJpZ2h0IElCTSBEZXV0c2NobGFuZCBFbnR3aWNrbHVuZyBHbWJI
IDIwMDUtMjAwNw0KPiArICoJQ2hyaXN0aWFuIEtyYWZmdCA8a3JhZmZ0QGRlLmlibS5jb20+DQo+
ICsgKg0KPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQo+ICsgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRp
b24pDQo+ICsgKiBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKyAqDQo+ICsgKiBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4gKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mDQo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlDQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLg0KPiArICoNCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo+ICsgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KPiArICogRm91
bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuDQo+
ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxp
bnV4L2NwdWZyZXEuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPg0KPiArI2lu
Y2x1ZGUgPGxpbnV4L3N1c3BlbmQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jcHUuaD4NCj4gKyNp
bmNsdWRlIDxsaW51eC9pby5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4NCj4gKyNpbmNs
dWRlIDxsaW51eC9zbXAuaD4NCj4gKw0KPiArI2luY2x1ZGUgPGFzbS9wcm9tLmg+DQo+ICsjaW5j
bHVkZSA8YXNtL3JlZy5oPg0KPiArI2luY2x1ZGUgPGFzbS9tYWNoZGVwLmg+DQo+ICsNCj4gKyNp
bmNsdWRlIDxzeXNkZXYvZnNsX3NvYy5oPg0KPiArDQo+ICtzdGF0aWMgREVGSU5FX01VVEVYKG1w
Yzg1eHhfc3dpdGNoX211dGV4KTsNCj4gK3N0YXRpYyB2b2lkIF9faW9tZW0gKmd1dHM7DQo+ICsN
Cj4gK3N0YXRpYyB1MzIgc3lzZnJlcTsNCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgbWF4X3BsbFsy
XTsNCj4gK3N0YXRpYyBhdG9taWNfdCBpbl9qb2dfcHJvY2VzczsNCj4gK3N0YXRpYyBzdHJ1Y3Qg
Y3B1ZnJlcV9mcmVxdWVuY3lfdGFibGUgKm1wYzg1eHhfZnJlcXM7IHN0YXRpYyBpbnQNCj4gKygq
c2V0X3BsbCkodW5zaWduZWQgaW50IGNwdSwgdW5zaWduZWQgaW50IHBsbCk7DQo+ICsNCj4gK3N0
YXRpYyBzdHJ1Y3QgY3B1ZnJlcV9mcmVxdWVuY3lfdGFibGUgbXBjODUzNl9mcmVxc190YWJsZVtd
ID0gew0KPiArCXszLAkwfSwNCj4gKwl7NCwJMH0sDQo+ICsJezUsCTB9LA0KPiArCXs2LAkwfSwN
Cj4gKwl7NywJMH0sDQo+ICsJezgsCTB9LA0KPiArCXswLAlDUFVGUkVRX1RBQkxFX0VORH0sDQo+
ICt9Ow0KPiArDQo+ICtzdGF0aWMgc3RydWN0IGNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlIHAxMDIy
X2ZyZXFzX3RhYmxlW10gPSB7DQo+ICsJezIsCTB9LA0KPiArCXszLAkwfSwNCj4gKwl7NCwJMH0s
DQo+ICsJezUsCTB9LA0KPiArCXs2LAkwfSwNCj4gKwl7NywJMH0sDQo+ICsJezgsCTB9LA0KPiAr
CXswLAlDUFVGUkVRX1RBQkxFX0VORH0sDQo+ICt9Ow0KPiArDQo+ICsjZGVmaW5lIEZSRVFfNTAw
TUh6CTUwMDAwMDAwMA0KPiArI2RlZmluZSBGUkVRXzgwME1Iegk4MDAwMDAwMDANCj4gKw0KPiAr
I2RlZmluZSBDT1JFX1JBVElPX1NUUklERQk4DQo+ICsjZGVmaW5lIENPUkVfUkFUSU9fTUFTSwkJ
MHgzZg0KPiArI2RlZmluZSBDT1JFX1JBVElPX1NISUZUCTE2DQo+ICsNCj4gKyNkZWZpbmUgUE9S
UExMU1IJMHgwCS8qIFBvd2VyLU9uIFJlc2V0IFBMTCByYXRpbyBzdGF0dXMgcmVnaXN0ZXIgKi8N
Cj4gKw0KPiArI2RlZmluZSBQTUpDUgkJMHg3YwkvKiBQb3dlciBNYW5hZ2VtZW50IEpvZyBDb250
cm9sIFJlZ2lzdGVyICovDQo+ICsjZGVmaW5lIFBNSkNSX0NPUkUwX1NQRAkweDAwMDAxMDAwDQo+
ICsjZGVmaW5lIFBNSkNSX0NPUkVfU1BECTB4MDAwMDIwMDANCj4gKw0KPiArI2RlZmluZSBQT1dN
R1RDU1IJMHg4MCAvKiBQb3dlciBtYW5hZ2VtZW50IGNvbnRyb2wgYW5kIHN0YXR1cw0KPiByZWdp
c3RlciAqLw0KPiArI2RlZmluZSBQT1dNR1RDU1JfSk9HCQkweDAwMjAwMDAwDQo+ICsjZGVmaW5l
IFBPV01HVENTUl9JTlRfTUFTSwkweDAwMDAwZjAwDQo+ICsNCj4gK3N0YXRpYyB2b2lkIHNwaW5f
d2hpbGVfam9nZ2luZyh2b2lkICpkdW1teSkgew0KPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+
ICsNCj4gKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7DQo+ICsNCj4gKwlhdG9taWNfaW5jKCZpbl9q
b2dfcHJvY2Vzcyk7DQo+ICsNCj4gKwl3aGlsZSAoYXRvbWljX3JlYWQoJmluX2pvZ19wcm9jZXNz
KSAhPSAwKQ0KPiArCQliYXJyaWVyKCk7DQo+ICsNCj4gKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFn
cyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZ2V0X3BsbChpbnQgaHdfY3B1KQ0KPiArew0K
PiArCWludCBzaGlmdDsNCj4gKwl1MzIgdmFsID0gaW5fYmUzMihndXRzICsgUE9SUExMU1IpOw0K
PiArDQo+ICsJc2hpZnQgPSBod19jcHUgKiBDT1JFX1JBVElPX1NUUklERSArIENPUkVfUkFUSU9f
U0hJRlQ7DQo+ICsNCj4gKwlyZXR1cm4gKHZhbCA+PiBzaGlmdCkgJiBDT1JFX1JBVElPX01BU0s7
IH0NCj4gKw0KPiArc3RhdGljIGludCBtcGM4NTM2X3NldF9wbGwodW5zaWduZWQgaW50IGNwdSwg
dW5zaWduZWQgaW50IHBsbCkgew0KPiArCXUzMiBjb3JlZnJlcSwgdmFsLCBtYXNrOw0KPiArCXVu
c2lnbmVkIGludCBjdXJfcGxsID0gZ2V0X3BsbCgwKTsNCj4gKwl1bnNpZ25lZCBsb25nIGZsYWdz
Ow0KPiArDQo+ICsJaWYgKHBsbCA9PSBjdXJfcGxsKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiAr
CXZhbCA9IChwbGwgJiBDT1JFX1JBVElPX01BU0spIDw8IENPUkVfUkFUSU9fU0hJRlQ7DQo+ICsN
Cj4gKwljb3JlZnJlcSA9IHN5c2ZyZXEgKiBwbGwgLyAyOw0KPiArCS8qDQo+ICsJICogU2V0IHRo
ZSBDT1JFeF9TUEQgYml0IGlmIHRoZSByZXF1ZXN0ZWQgY29yZSBmcmVxdWVuY3kNCj4gKwkgKiBp
cyBsYXJnZXIgdGhhbiB0aGUgdGhyZXNob2xkIGZyZXF1ZW5jeS4NCj4gKwkgKi8NCj4gKwlpZiAo
Y29yZWZyZXEgPiBGUkVRXzgwME1IeikNCj4gKwkJCXZhbCB8PSBQTUpDUl9DT1JFX1NQRDsNCj4g
Kw0KPiArCW1hc2sgPSAoQ09SRV9SQVRJT19NQVNLIDw8IENPUkVfUkFUSU9fU0hJRlQpIHwgUE1K
Q1JfQ09SRV9TUEQ7DQo+ICsJY2xyc2V0Yml0c19iZTMyKGd1dHMgKyBQTUpDUiwgbWFzaywgdmFs
KTsNCj4gKw0KPiArCS8qIHJlYWRiYWNrIHRvIHN5bmMgd3JpdGUgKi8NCj4gKwlpbl9iZTMyKGd1
dHMgKyBQTUpDUik7DQo+ICsNCj4gKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7DQo+ICsJbXBjODV4
eF9lbnRlcl9qb2coZ2V0X2ltbXJiYXNlKCksIFBPV01HVENTUl9KT0cpOw0KPiArCWxvY2FsX2ly
cV9yZXN0b3JlKGZsYWdzKTsNCj4gKw0KPiArCS8qIHZlcmlmeSAqLw0KPiArCWN1cl9wbGwgPSAg
Z2V0X3BsbCgwKTsNCj4gKwlpZiAoY3VyX3BsbCAhPSBwbGwpIHsNCj4gKwkJcHJfZXJyKCIlczog
ZXJyb3IuIFRoZSBjdXJyZW50IFBMTCBvZiBjb3JlIDAgaXMgJWQgaW5zdGVhZA0KPiBvZiAlZC5c
biIsDQo+ICsJCQkJX19mdW5jX18sIGN1cl9wbGwsIHBsbCk7DQo+ICsJCXJldHVybiAtMTsNCj4g
Kwl9DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBwMTAyMl9z
ZXRfcGxsKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBwbGwpIHsNCj4gKwlpbnQgaW5k
ZXgsIGh3X2NwdSA9IGdldF9oYXJkX3NtcF9wcm9jZXNzb3JfaWQoY3B1KTsNCj4gKwlpbnQgc2hp
ZnQ7DQo+ICsJdTMyIGNvcmVmcmVxLCB2YWwsIG1hc2sgPSAwOw0KPiArCXVuc2lnbmVkIGludCBj
dXJfcGxsID0gZ2V0X3BsbChod19jcHUpOw0KPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ICsJ
aW50IHJldCA9IDA7DQo+ICsNCj4gKwlpZiAocGxsID09IGN1cl9wbGwpDQo+ICsJCXJldHVybiAw
Ow0KPiArDQo+ICsJc2hpZnQgPSBod19jcHUgKiBDT1JFX1JBVElPX1NUUklERSArIENPUkVfUkFU
SU9fU0hJRlQ7DQo+ICsJdmFsID0gKHBsbCAmIENPUkVfUkFUSU9fTUFTSykgPDwgc2hpZnQ7DQo+
ICsNCj4gKwljb3JlZnJlcSA9IHN5c2ZyZXEgKiBwbGwgLyAyOw0KPiArCS8qDQo+ICsJICogU2V0
IHRoZSBDT1JFeF9TUEQgYml0IGlmIHRoZSByZXF1ZXN0ZWQgY29yZSBmcmVxdWVuY3kNCj4gKwkg
KiBpcyBsYXJnZXIgdGhhbiB0aGUgdGhyZXNob2xkIGZyZXF1ZW5jeS4NCj4gKwkgKi8NCj4gKwlp
ZiAoY29yZWZyZXEgPiBGUkVRXzUwME1IeikNCj4gKwkJdmFsIHw9IFBNSkNSX0NPUkUwX1NQRCA8
PCBod19jcHU7DQo+ICsNCj4gKwltYXNrID0gKENPUkVfUkFUSU9fTUFTSyA8PCBzaGlmdCkgfCAo
UE1KQ1JfQ09SRTBfU1BEIDw8IGh3X2NwdSk7DQo+ICsJY2xyc2V0Yml0c19iZTMyKGd1dHMgKyBQ
TUpDUiwgbWFzaywgdmFsKTsNCj4gKw0KPiArCS8qIHJlYWRiYWNrIHRvIHN5bmMgd3JpdGUgKi8N
Cj4gKwlpbl9iZTMyKGd1dHMgKyBQTUpDUik7DQo+ICsNCj4gKwljcHVfaG90cGx1Z19kaXNhYmxl
X2JlZm9yZV9mcmVlemUoKTsNCj4gKwkvKg0KPiArCSAqIEEgSm9nIHJlcXVlc3QgY2FuIG5vdCBi
ZSBhc3NlcnRlZCB3aGVuIGFueSBjb3JlIGlzIGluIGEgbG93DQo+ICsJICogcG93ZXIgc3RhdGUg
b24gUDEwMjIuIEJlZm9yZSBleGVjdXRpbmcgYSBqb2cgcmVxdWVzdCwgYW55DQo+ICsJICogY29y
ZSB3aGljaCBpcyBpbiBhIGxvdyBwb3dlciBzdGF0ZSBtdXN0IGJlIHdha2VkIGJ5IGENCj4gKwkg
KiBpbnRlcnJ1cHQsIGFuZCBrZWVwIHdha2luZyB1cCB1bnRpbCB0aGUgc2VxdWVuY2UgaXMNCj4g
KwkgKiBmaW5pc2hlZC4NCj4gKwkgKi8NCj4gKwlmb3JfZWFjaF9wcmVzZW50X2NwdShpbmRleCkg
ew0KPiArCQlpZiAoIWNwdV9vbmxpbmUoaW5kZXgpKSB7DQo+ICsJCQljcHVfaG90cGx1Z19lbmFi
bGVfYWZ0ZXJfdGhhdygpOw0KPiArCQkJcHJfZXJyKCIlczogZXJyb3IsIGNvcmUlZCBpcyBkb3du
LlxuIiwgX19mdW5jX18sIGluZGV4KTsNCj4gKwkJCXJldHVybiAtMTsNCj4gKwkJfQ0KPiArCX0N
Cj4gKw0KPiArCWF0b21pY19zZXQoJmluX2pvZ19wcm9jZXNzLCAwKTsNCj4gKwlzbXBfY2FsbF9m
dW5jdGlvbihzcGluX3doaWxlX2pvZ2dpbmcsIE5VTEwsIDApOw0KPiArDQo+ICsJbG9jYWxfaXJx
X3NhdmUoZmxhZ3MpOw0KPiArDQo+ICsJLyogV2FpdCBmb3IgdGhlIG90aGVyIGNvcmUgdG8gd2Fr
ZS4gKi8NCj4gKwlpZiAoIXNwaW5fZXZlbnRfdGltZW91dChhdG9taWNfcmVhZCgmaW5fam9nX3By
b2Nlc3MpID09IDEsIDEwMDAsDQo+IDEwMCkpIHsNCj4gKwkJcHJfZXJyKCIlczogdGltZW91dCwg
dGhlIG90aGVyIGNvcmUgaXMgbm90IGF0IHJ1bm5pbmcNCj4gc3RhdGUuXG4iLA0KPiArCQkJCQlf
X2Z1bmNfXyk7DQo+ICsJCXJldCA9IC0xOw0KPiArCQlnb3RvIGVycjsNCj4gKwl9DQo+ICsNCj4g
KwlvdXRfYmUzMihndXRzICsgUE9XTUdUQ1NSLCBQT1dNR1RDU1JfSk9HIHwgUE9XTUdUQ1NSX0lO
VF9NQVNLKTsNCj4gKw0KPiArCWlmICghc3Bpbl9ldmVudF90aW1lb3V0KA0KPiArCQkoaW5fYmUz
MihndXRzICsgUE9XTUdUQ1NSKSAmIFBPV01HVENTUl9KT0cpID09IDAsIDEwMDAsIDEwMCkpDQo+
IHsNCj4gKwkJcHJfZXJyKCIlczogdGltZW91dCwgZmFpbCB0byBzd2l0Y2ggdGhlIGNvcmUgZnJl
cXVlbmN5LlxuIiwNCj4gKwkJCQlfX2Z1bmNfXyk7DQo+ICsJCXJldCA9IC0xOw0KPiArCQlnb3Rv
IGVycjsNCj4gKwl9DQo+ICsNCj4gKwljbHJiaXRzMzIoZ3V0cyArIFBPV01HVENTUiwgUE9XTUdU
Q1NSX0lOVF9NQVNLKTsNCj4gKwlpbl9iZTMyKGd1dHMgKyBQT1dNR1RDU1IpOw0KPiArDQo+ICsJ
YXRvbWljX3NldCgmaW5fam9nX3Byb2Nlc3MsIDApOw0KPiArZXJyOg0KPiArCWxvY2FsX2lycV9y
ZXN0b3JlKGZsYWdzKTsNCj4gKwljcHVfaG90cGx1Z19lbmFibGVfYWZ0ZXJfdGhhdygpOw0KPiAr
DQo+ICsJLyogdmVyaWZ5ICovDQo+ICsJY3VyX3BsbCA9ICBnZXRfcGxsKGh3X2NwdSk7DQo+ICsJ
aWYgKGN1cl9wbGwgIT0gcGxsKSB7DQo+ICsJCXByX2VycigiJXM6IGVycm9yLCB0aGUgY3VycmVu
dCBQTEwgb2YgY29yZSAlZCBpcyAlZCBpbnN0ZWFkDQo+IG9mICVkLlxuIiwNCj4gKwkJCQlfX2Z1
bmNfXywgaHdfY3B1LCBjdXJfcGxsLCBwbGwpOw0KPiArCQlyZXR1cm4gLTE7DQo+ICsJfQ0KPiAr
DQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAqIGNwdWZyZXEgZnVuY3Rp
b25zDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQgbXBjODV4eF9jcHVmcmVxX2NwdV9pbml0KHN0cnVj
dCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KSB7DQo+ICsJdW5zaWduZWQgaW50IGksIGN1cl9wbGw7
DQo+ICsJaW50IGh3X2NwdSA9IGdldF9oYXJkX3NtcF9wcm9jZXNzb3JfaWQocG9saWN5LT5jcHUp
Ow0KPiArDQo+ICsJaWYgKCFjcHVfcHJlc2VudChwb2xpY3ktPmNwdSkpDQo+ICsJCXJldHVybiAt
RU5PREVWOw0KPiArDQo+ICsJLyogdGhlIGxhdGVuY3kgb2YgYSB0cmFuc2l0aW9uLCB0aGUgdW5p
dCBpcyBucyAqLw0KPiArCXBvbGljeS0+Y3B1aW5mby50cmFuc2l0aW9uX2xhdGVuY3kgPSAyMDAw
Ow0KPiArDQo+ICsJY3VyX3BsbCA9IGdldF9wbGwoaHdfY3B1KTsNCj4gKw0KPiArCS8qIGluaXRp
YWxpemUgZnJlcXVlbmN5IHRhYmxlICovDQo+ICsJcHJfZGVidWcoImNvcmUlZCBmcmVxdWVuY3kg
dGFibGU6XG4iLCBod19jcHUpOw0KPiArCWZvciAoaSA9IDA7IG1wYzg1eHhfZnJlcXNbaV0uZnJl
cXVlbmN5ICE9IENQVUZSRVFfVEFCTEVfRU5EOyBpKyspIHsNCj4gKwkJaWYgKG1wYzg1eHhfZnJl
cXNbaV0uaW5kZXggPD0gbWF4X3BsbFtod19jcHVdKSB7DQo+ICsJCQkvKiBUaGUgZnJlcXVlbmN5
IHVuaXQgaXMga0h6LiAqLw0KPiArCQkJbXBjODV4eF9mcmVxc1tpXS5mcmVxdWVuY3kgPQ0KPiAr
CQkJCShzeXNmcmVxICogbXBjODV4eF9mcmVxc1tpXS5pbmRleCAvIDIpIC8gMTAwMDsNCj4gKwkJ
fSBlbHNlIHsNCj4gKwkJCW1wYzg1eHhfZnJlcXNbaV0uZnJlcXVlbmN5ID0gQ1BVRlJFUV9FTlRS
WV9JTlZBTElEOw0KPiArCQl9DQo+ICsNCj4gKwkJcHJfZGVidWcoIiVkOiAlZGtIelxuIiwgaSwg
bXBjODV4eF9mcmVxc1tpXS5mcmVxdWVuY3kpOw0KPiArDQo+ICsJCWlmIChtcGM4NXh4X2ZyZXFz
W2ldLmluZGV4ID09IGN1cl9wbGwpDQo+ICsJCQlwb2xpY3ktPmN1ciA9IG1wYzg1eHhfZnJlcXNb
aV0uZnJlcXVlbmN5Ow0KPiArCX0NCj4gKwlwcl9kZWJ1ZygiY3VycmVudCBwbGwgaXMgYXQgJWQs
IGFuZCBjb3JlIGZyZXEgaXMlZFxuIiwNCj4gKwkJCWN1cl9wbGwsIHBvbGljeS0+Y3VyKTsNCj4g
Kw0KPiArCWNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlX2dldF9hdHRyKG1wYzg1eHhfZnJlcXMsIHBv
bGljeS0+Y3B1KTsNCj4gKw0KPiArCS8qDQo+ICsJICogVGhpcyBlbnN1cmVzIHRoYXQgcG9saWN5
LT5jcHVpbmZvX21pbg0KPiArCSAqIGFuZCBwb2xpY3ktPmNwdWluZm9fbWF4IGFyZSBzZXQgY29y
cmVjdGx5Lg0KPiArCSAqLw0KPiArCXJldHVybiBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV9jcHVp
bmZvKHBvbGljeSwgbXBjODV4eF9mcmVxcyk7IH0NCj4gKw0KPiArc3RhdGljIGludCBtcGM4NXh4
X2NwdWZyZXFfY3B1X2V4aXQoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpIHsNCj4gKwlj
cHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV9wdXRfYXR0cihwb2xpY3ktPmNwdSk7DQo+ICsNCj4gKwly
ZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtcGM4NXh4X2NwdWZyZXFfdmVyaWZ5
KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KSB7DQo+ICsJcmV0dXJuIGNwdWZyZXFfZnJl
cXVlbmN5X3RhYmxlX3ZlcmlmeShwb2xpY3ksIG1wYzg1eHhfZnJlcXMpOyB9DQo+ICsNCj4gK3N0
YXRpYyBpbnQgbXBjODV4eF9jcHVmcmVxX3RhcmdldChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBv
bGljeSwNCj4gKwkJCSAgICAgIHVuc2lnbmVkIGludCB0YXJnZXRfZnJlcSwNCj4gKwkJCSAgICAg
IHVuc2lnbmVkIGludCByZWxhdGlvbikNCj4gK3sNCj4gKwlzdHJ1Y3QgY3B1ZnJlcV9mcmVxcyBm
cmVxczsNCj4gKwl1bnNpZ25lZCBpbnQgbmV3Ow0KPiArCWludCByZXQgPSAwOw0KPiArDQo+ICsJ
aWYgKCFzZXRfcGxsKQ0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKw0KPiArCWNwdWZyZXFfZnJl
cXVlbmN5X3RhYmxlX3RhcmdldChwb2xpY3ksDQo+ICsJCQkJICAgICAgIG1wYzg1eHhfZnJlcXMs
DQo+ICsJCQkJICAgICAgIHRhcmdldF9mcmVxLA0KPiArCQkJCSAgICAgICByZWxhdGlvbiwNCj4g
KwkJCQkgICAgICAgJm5ldyk7DQo+ICsNCj4gKwlmcmVxcy5vbGQgPSBwb2xpY3ktPmN1cjsNCj4g
KwlmcmVxcy5uZXcgPSBtcGM4NXh4X2ZyZXFzW25ld10uZnJlcXVlbmN5Ow0KPiArCWZyZXFzLmNw
dSA9IHBvbGljeS0+Y3B1Ow0KPiArDQo+ICsJbXV0ZXhfbG9jaygmbXBjODV4eF9zd2l0Y2hfbXV0
ZXgpOw0KPiArCWNwdWZyZXFfbm90aWZ5X3RyYW5zaXRpb24oJmZyZXFzLCBDUFVGUkVRX1BSRUNI
QU5HRSk7DQo+ICsNCj4gKwlyZXQgPSBzZXRfcGxsKHBvbGljeS0+Y3B1LCBtcGM4NXh4X2ZyZXFz
W25ld10uaW5kZXgpOw0KPiArCWlmICghcmV0KSB7DQo+ICsJCXByX2luZm8oImNwdWZyZXE6IFNl
dHRpbmcgY29yZSVkIGZyZXF1ZW5jeSB0byAlZCBrSHogYW5kIFBMTA0KPiByYXRpbyB0byAlZDoy
XG4iLA0KPiArCQkJIHBvbGljeS0+Y3B1LCBtcGM4NXh4X2ZyZXFzW25ld10uZnJlcXVlbmN5LA0K
PiArCQkJIG1wYzg1eHhfZnJlcXNbbmV3XS5pbmRleCk7DQo+ICsNCj4gKwkJcHBjX3Byb2NfZnJl
cSA9IGZyZXFzLm5ldyAqIDEwMDB1bDsNCj4gKwl9DQo+ICsJY3B1ZnJlcV9ub3RpZnlfdHJhbnNp
dGlvbigmZnJlcXMsIENQVUZSRVFfUE9TVENIQU5HRSk7DQo+ICsJbXV0ZXhfdW5sb2NrKCZtcGM4
NXh4X3N3aXRjaF9tdXRleCk7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtz
dGF0aWMgc3RydWN0IGNwdWZyZXFfZHJpdmVyIG1wYzg1eHhfY3B1ZnJlcV9kcml2ZXIgPSB7DQo+
ICsJLnZlcmlmeQkJPSBtcGM4NXh4X2NwdWZyZXFfdmVyaWZ5LA0KPiArCS50YXJnZXQJCT0gbXBj
ODV4eF9jcHVmcmVxX3RhcmdldCwNCj4gKwkuaW5pdAkJPSBtcGM4NXh4X2NwdWZyZXFfY3B1X2lu
aXQsDQo+ICsJLmV4aXQJCT0gbXBjODV4eF9jcHVmcmVxX2NwdV9leGl0LA0KPiArCS5uYW1lCQk9
ICJtcGM4NXh4LUpPRyIsDQo+ICsJLm93bmVyCQk9IFRISVNfTU9EVUxFLA0KPiArCS5mbGFncwkJ
PSBDUFVGUkVRX0NPTlNUX0xPT1BTLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBtcGM4NXh4
X2pvYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldikgew0KPiArCXN0cnVjdCBk
ZXZpY2Vfbm9kZSAqbnAgPSBvZmRldi0+ZGV2Lm9mX25vZGU7DQo+ICsJdW5zaWduZWQgaW50IHN2
cjsNCj4gKw0KPiArCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgImZzbCxtcGM4NTM2
LWd1dHMiKSkgew0KPiArCQlzdnIgPSBtZnNwcihTUFJOX1NWUik7DQo+ICsJCWlmICgoc3ZyICYg
MHg3ZmZmKSA9PSAweDEwKSB7DQo+ICsJCQlwcl9lcnIoIk1QQzg1MzYgUmV2IDEuMCBkbyBub3Qg
c3VwcG9ydCBKT0cuXG4iKTsNCj4gKwkJCXJldHVybiAtRU5PREVWOw0KPiArCQl9DQo+ICsJCW1w
Yzg1eHhfZnJlcXMgPSBtcGM4NTM2X2ZyZXFzX3RhYmxlOw0KPiArCQlzZXRfcGxsID0gbXBjODUz
Nl9zZXRfcGxsOw0KPiArCX0gZWxzZSBpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUobnAsICJm
c2wscDEwMjItZ3V0cyIpKSB7DQo+ICsJCW1wYzg1eHhfZnJlcXMgPSBwMTAyMl9mcmVxc190YWJs
ZTsNCj4gKwkJc2V0X3BsbCA9IHAxMDIyX3NldF9wbGw7DQo+ICsJfSBlbHNlIHsNCj4gKwkJcmV0
dXJuIC1FTk9ERVY7DQo+ICsJfQ0KPiArDQo+ICsJc3lzZnJlcSA9IGZzbF9nZXRfc3lzX2ZyZXEo
KTsNCj4gKw0KPiArCWd1dHMgPSBvZl9pb21hcChucCwgMCk7DQo+ICsJaWYgKCFndXRzKQ0KPiAr
CQlyZXR1cm4gLUVOT0RFVjsNCj4gKw0KPiArCW1heF9wbGxbMF0gPSBnZXRfcGxsKDApOw0KPiAr
CWlmIChtcGM4NXh4X2ZyZXFzID09IHAxMDIyX2ZyZXFzX3RhYmxlKQ0KPiArCQltYXhfcGxsWzFd
ID0gZ2V0X3BsbCgxKTsNCj4gKw0KPiArCXByX2luZm8oIkZyZWVzY2FsZSBNUEM4NXh4IENQVSBm
cmVxdWVuY3kgc3dpdGNoaW5nKEpPRykgZHJpdmVyXG4iKTsNCj4gKw0KPiArCXJldHVybiBjcHVm
cmVxX3JlZ2lzdGVyX2RyaXZlcigmbXBjODV4eF9jcHVmcmVxX2RyaXZlcik7DQo+ICt9DQo+ICsN
Cj4gK3N0YXRpYyBpbnQgbXBjODV4eF9qb2dfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug
Km9mZGV2KSB7DQo+ICsJaW91bm1hcChndXRzKTsNCj4gKwljcHVmcmVxX3VucmVnaXN0ZXJfZHJp
dmVyKCZtcGM4NXh4X2NwdWZyZXFfZHJpdmVyKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0K
PiArDQo+ICtzdGF0aWMgc3RydWN0IG9mX2RldmljZV9pZCBtcGM4NXh4X2pvZ19pZHNbXSA9IHsN
Cj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxtcGM4NTM2LWd1dHMiLCB9LA0KPiArCXsgLmNvbXBh
dGlibGUgPSAiZnNsLHAxMDIyLWd1dHMiLCB9LA0KPiArCXt9DQo+ICt9Ow0KPiArDQo+ICtzdGF0
aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtcGM4NXh4X2pvZ19kcml2ZXIgPSB7DQo+ICsJLmRy
aXZlciA9IHsNCj4gKwkJLm5hbWUgPSAibXBjODV4eF9jcHVmcmVxX2pvZyIsDQo+ICsJCS5vd25l
ciA9IFRISVNfTU9EVUxFLA0KPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBtcGM4NXh4X2pvZ19pZHMs
DQo+ICsJfSwNCj4gKwkucHJvYmUgPSBtcGM4NXh4X2pvYl9wcm9iZSwNCj4gKwkucmVtb3ZlID0g
bXBjODV4eF9qb2dfcmVtb3ZlLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBfX2luaXQgbXBj
ODV4eF9qb2dfaW5pdCh2b2lkKSB7DQo+ICsJcmV0dXJuIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3Rl
cigmbXBjODV4eF9qb2dfZHJpdmVyKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgX19leGl0
IG1wYzg1eHhfam9nX2V4aXQodm9pZCkgew0KPiArCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVy
KCZtcGM4NXh4X2pvZ19kcml2ZXIpOw0KPiArfQ0KPiArDQo+ICttb2R1bGVfaW5pdChtcGM4NXh4
X2pvZ19pbml0KTsNCj4gK21vZHVsZV9leGl0KG1wYzg1eHhfam9nX2V4aXQpOw0KPiArDQo+ICtN
T0RVTEVfTElDRU5TRSgiR1BMIik7DQo+ICtNT0RVTEVfQVVUSE9SKCJEYXZlIExpdSA8ZGF2ZWxp
dUBmcmVlc2NhbGUuY29tPiIpOw0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcHUuaCBi
L2luY2x1ZGUvbGludXgvY3B1LmggaW5kZXgNCj4gY2U3YTA3NC4uZGY4ZjczZCAxMDA2NDQNCj4g
LS0tIGEvaW5jbHVkZS9saW51eC9jcHUuaA0KPiArKysgYi9pbmNsdWRlL2xpbnV4L2NwdS5oDQo+
IEBAIC0xNDYsNiArMTQ2LDggQEAgdm9pZCBub3RpZnlfY3B1X3N0YXJ0aW5nKHVuc2lnbmVkIGlu
dCBjcHUpOyAgZXh0ZXJuDQo+IHZvaWQgY3B1X21hcHNfdXBkYXRlX2JlZ2luKHZvaWQpOyAgZXh0
ZXJuIHZvaWQgY3B1X21hcHNfdXBkYXRlX2RvbmUodm9pZCk7DQo+IA0KPiArZXh0ZXJuIHZvaWQg
Y3B1X2hvdHBsdWdfZGlzYWJsZV9iZWZvcmVfZnJlZXplKHZvaWQpOw0KPiArZXh0ZXJuIHZvaWQg
Y3B1X2hvdHBsdWdfZW5hYmxlX2FmdGVyX3RoYXcodm9pZCk7DQo+ICAjZWxzZQkvKiBDT05GSUdf
U01QICovDQo+IA0KPiAgI2RlZmluZSBjcHVfbm90aWZpZXIoZm4sIHByaSkJZG8geyAodm9pZCko
Zm4pOyB9IHdoaWxlICgwKQ0KPiBAQCAtMTY3LDYgKzE2OSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBjcHVfbWFwc191cGRhdGVfZG9uZSh2b2lkKSAgeyAgfQ0KPiANCj4gK3N0YXRpYyBpbmxpbmUg
dm9pZCBjcHVfaG90cGx1Z19kaXNhYmxlX2JlZm9yZV9mcmVlemUodm9pZCkJe30NCj4gK3N0YXRp
YyBpbmxpbmUgdm9pZCBjcHVfaG90cGx1Z19lbmFibGVfYWZ0ZXJfdGhhdyh2b2lkKQl7fQ0KPiAg
I2VuZGlmIC8qIENPTkZJR19TTVAgKi8NCj4gIGV4dGVybiBzdHJ1Y3QgYnVzX3R5cGUgY3B1X3N1
YnN5czsNCj4gDQo+IGRpZmYgLS1naXQgYS9rZXJuZWwvY3B1LmMgYi9rZXJuZWwvY3B1LmMgaW5k
ZXggYjVlNGFiMi4uNmZkYzZkZiAxMDA2NDQNCj4gLS0tIGEva2VybmVsL2NwdS5jDQo+ICsrKyBi
L2tlcm5lbC9jcHUuYw0KPiBAQCAtNDU0LDYgKzQ1NCwzNiBAQCBvdXQ6DQo+ICB9DQo+ICBFWFBP
UlRfU1lNQk9MX0dQTChjcHVfdXApOw0KPiANCj4gKy8qDQo+ICsgKiBQcmV2ZW50IHJlZ3VsYXIg
Q1BVIGhvdHBsdWcgZnJvbSByYWNpbmcgd2l0aCB0aGUgZnJlZXplciwgYnkNCj4gK2Rpc2FibGlu
ZyBDUFUNCj4gKyAqIGhvdHBsdWcgd2hlbiB0YXNrcyBhcmUgYWJvdXQgdG8gYmUgZnJvemVuLiBB
bHNvLCBkb24ndCBhbGxvdyB0aGUNCj4gK2ZyZWV6ZXINCj4gKyAqIHRvIGNvbnRpbnVlIHVudGls
IGFueSBjdXJyZW50bHkgcnVubmluZyBDUFUgaG90cGx1ZyBvcGVyYXRpb24gZ2V0cw0KPiArICog
Y29tcGxldGVkLg0KPiArICogVG8gbW9kaWZ5IHRoZSAnY3B1X2hvdHBsdWdfZGlzYWJsZWQnIGZs
YWcsIHdlIG5lZWQgdG8gYWNxdWlyZSB0aGUNCj4gKyAqICdjcHVfYWRkX3JlbW92ZV9sb2NrJy4g
QW5kIHRoaXMgc2FtZSBsb2NrIGlzIGFsc28gdGFrZW4gYnkgdGhlDQo+ICtyZWd1bGFyDQo+ICsg
KiBDUFUgaG90cGx1ZyBwYXRoIGFuZCByZWxlYXNlZCBvbmx5IGFmdGVyIGl0IGlzIGNvbXBsZXRl
LiBUaHVzLCB3ZQ0KPiArICogKGFuZCBoZW5jZSB0aGUgZnJlZXplcikgd2lsbCBibG9jayBoZXJl
IHVudGlsIGFueSBjdXJyZW50bHkgcnVubmluZw0KPiArQ1BVDQo+ICsgKiBob3RwbHVnIG9wZXJh
dGlvbiBnZXRzIGNvbXBsZXRlZC4NCj4gKyAqLw0KPiArdm9pZCBjcHVfaG90cGx1Z19kaXNhYmxl
X2JlZm9yZV9mcmVlemUodm9pZCkNCj4gK3sNCj4gKwljcHVfbWFwc191cGRhdGVfYmVnaW4oKTsN
Cj4gKwljcHVfaG90cGx1Z19kaXNhYmxlZCA9IDE7DQo+ICsJY3B1X21hcHNfdXBkYXRlX2RvbmUo
KTsNCj4gK30NCj4gKw0KPiArDQo+ICsvKg0KPiArICogV2hlbiB0YXNrcyBoYXZlIGJlZW4gdGhh
d2VkLCByZS1lbmFibGUgcmVndWxhciBDUFUgaG90cGx1ZyAod2hpY2gNCj4gK2hhZCBiZWVuDQo+
ICsgKiBkaXNhYmxlZCB3aGlsZSBiZWdpbm5pbmcgdG8gZnJlZXplIHRhc2tzKS4NCj4gKyAqLw0K
PiArdm9pZCBjcHVfaG90cGx1Z19lbmFibGVfYWZ0ZXJfdGhhdyh2b2lkKQ0KPiArew0KPiArCWNw
dV9tYXBzX3VwZGF0ZV9iZWdpbigpOw0KPiArCWNwdV9ob3RwbHVnX2Rpc2FibGVkID0gMDsNCj4g
KwljcHVfbWFwc191cGRhdGVfZG9uZSgpOw0KPiArfQ0KPiArDQo+ICAjaWZkZWYgQ09ORklHX1BN
X1NMRUVQX1NNUA0KPiAgc3RhdGljIGNwdW1hc2tfdmFyX3QgZnJvemVuX2NwdXM7DQo+IA0KPiBA
QCAtNTQxLDM2ICs1NzEsNiBAQCBzdGF0aWMgaW50IF9faW5pdCBhbGxvY19mcm96ZW5fY3B1cyh2
b2lkKQ0KPiBjb3JlX2luaXRjYWxsKGFsbG9jX2Zyb3plbl9jcHVzKTsNCj4gDQo+ICAvKg0KPiAt
ICogUHJldmVudCByZWd1bGFyIENQVSBob3RwbHVnIGZyb20gcmFjaW5nIHdpdGggdGhlIGZyZWV6
ZXIsIGJ5DQo+IGRpc2FibGluZyBDUFUNCj4gLSAqIGhvdHBsdWcgd2hlbiB0YXNrcyBhcmUgYWJv
dXQgdG8gYmUgZnJvemVuLiBBbHNvLCBkb24ndCBhbGxvdyB0aGUNCj4gZnJlZXplcg0KPiAtICog
dG8gY29udGludWUgdW50aWwgYW55IGN1cnJlbnRseSBydW5uaW5nIENQVSBob3RwbHVnIG9wZXJh
dGlvbiBnZXRzDQo+IC0gKiBjb21wbGV0ZWQuDQo+IC0gKiBUbyBtb2RpZnkgdGhlICdjcHVfaG90
cGx1Z19kaXNhYmxlZCcgZmxhZywgd2UgbmVlZCB0byBhY3F1aXJlIHRoZQ0KPiAtICogJ2NwdV9h
ZGRfcmVtb3ZlX2xvY2snLiBBbmQgdGhpcyBzYW1lIGxvY2sgaXMgYWxzbyB0YWtlbiBieSB0aGUN
Cj4gcmVndWxhcg0KPiAtICogQ1BVIGhvdHBsdWcgcGF0aCBhbmQgcmVsZWFzZWQgb25seSBhZnRl
ciBpdCBpcyBjb21wbGV0ZS4gVGh1cywgd2UNCj4gLSAqIChhbmQgaGVuY2UgdGhlIGZyZWV6ZXIp
IHdpbGwgYmxvY2sgaGVyZSB1bnRpbCBhbnkgY3VycmVudGx5IHJ1bm5pbmcNCj4gQ1BVDQo+IC0g
KiBob3RwbHVnIG9wZXJhdGlvbiBnZXRzIGNvbXBsZXRlZC4NCj4gLSAqLw0KPiAtdm9pZCBjcHVf
aG90cGx1Z19kaXNhYmxlX2JlZm9yZV9mcmVlemUodm9pZCkNCj4gLXsNCj4gLQljcHVfbWFwc191
cGRhdGVfYmVnaW4oKTsNCj4gLQljcHVfaG90cGx1Z19kaXNhYmxlZCA9IDE7DQo+IC0JY3B1X21h
cHNfdXBkYXRlX2RvbmUoKTsNCj4gLX0NCj4gLQ0KPiAtDQo+IC0vKg0KPiAtICogV2hlbiB0YXNr
cyBoYXZlIGJlZW4gdGhhd2VkLCByZS1lbmFibGUgcmVndWxhciBDUFUgaG90cGx1ZyAod2hpY2gg
aGFkDQo+IGJlZW4NCj4gLSAqIGRpc2FibGVkIHdoaWxlIGJlZ2lubmluZyB0byBmcmVlemUgdGFz
a3MpLg0KPiAtICovDQo+IC12b2lkIGNwdV9ob3RwbHVnX2VuYWJsZV9hZnRlcl90aGF3KHZvaWQp
DQo+IC17DQo+IC0JY3B1X21hcHNfdXBkYXRlX2JlZ2luKCk7DQo+IC0JY3B1X2hvdHBsdWdfZGlz
YWJsZWQgPSAwOw0KPiAtCWNwdV9tYXBzX3VwZGF0ZV9kb25lKCk7DQo+IC19DQo+IC0NCj4gLS8q
DQo+ICAgKiBXaGVuIGNhbGxiYWNrcyBmb3IgQ1BVIGhvdHBsdWcgbm90aWZpY2F0aW9ucyBhcmUg
YmVpbmcgZXhlY3V0ZWQsIHdlDQo+IG11c3QNCj4gICAqIGVuc3VyZSB0aGF0IHRoZSBzdGF0ZSBv
ZiB0aGUgc3lzdGVtIHdpdGggcmVzcGVjdCB0byB0aGUgdGFza3MgYmVpbmcNCj4gZnJvemVuDQo+
ICAgKiBvciBub3QsIGFzIHJlcG9ydGVkIGJ5IHRoZSBub3RpZmljYXRpb24sIHJlbWFpbnMgdW5j
aGFuZ2VkDQo+ICp0aHJvdWdob3V0IHRoZQ0KPiAtLQ0KPiAxLjcuMw0KPiANCj4gDQo+IF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IExpbnV4cHBjLWRl
diBtYWlsaW5nIGxpc3QNCj4gTGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcNCj4gaHR0cHM6
Ly9saXN0cy5vemxhYnMub3JnL2xpc3RpbmZvL2xpbnV4cHBjLWRldg0KDQo=
^ permalink raw reply
* RE: [PATCH] powerpc: add Book E support to 64-bit hibernation
From: Wang Dongsheng-B40534 @ 2013-04-07 3:01 UTC (permalink / raw)
To: Wood Scott-B07421; +Cc: Johannes Berg, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <1365020140.25627.9@snotra>
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Thursday, April 04, 2013 4:16 AM
> To: Wang Dongsheng-B40534
> Cc: Wood Scott-B07421; Johannes Berg; linuxppc-dev@lists.ozlabs.org
> Subject: Re: [PATCH] powerpc: add Book E support to 64-bit hibernation
>=20
> On 04/03/2013 12:36:41 AM, Wang Dongsheng-B40534 wrote:
> >
> >
> > > -----Original Message-----
> > > From: Wood Scott-B07421
> > > Sent: Wednesday, April 03, 2013 8:35 AM
> > > To: Wang Dongsheng-B40534
> > > Cc: Wood Scott-B07421; Johannes Berg; linuxppc-dev@lists.ozlabs.org
> > > Subject: Re: [PATCH] powerpc: add Book E support to 64-bit
> > hibernation
> > >
> > > On 04/02/2013 12:28:40 AM, Wang Dongsheng-B40534 wrote:
> > > > Hi scott & Johannes,
> > > >
> > > > Thanks for reviewing.
> > > >
> > > > @scott, About this patch, could you please help ack this patch?
> > >
> > > Please investigate the issue of whether we are loading kernel module
> > > code in this step, and whether cache flushing is needed as a result.
> > >
> > Sorry, I am not very clear what you mean.
> > When the kernel boot end, modprobe some xx.ko?
>=20
> Suppose, before the kernel was suspended, modules had been loaded. At
> what point do those modules get restored, and when does the cache get
> flushed?
>=20
Before the kernel was suspended, modules had been loaded, the modules is
already in memory. And /lib/modules/* is belong to vfs.
When suspend to disk, all used pages will be saved.(Include VFS, Loaded mod=
ules)
When restore, the kernel will not modprobe again.
The non-bootcpu will restore all pages.(Include VFS, Loaded modules)
So, It does not need to flush.
^ permalink raw reply
* Re: [PATCH 08/17] powerpc/85xx: add support to JOG feature using cpufreq interface
From: Zhao Chenhui @ 2013-04-07 3:15 UTC (permalink / raw)
To: Tang Yuantian-B29983; +Cc: linuxppc-dev@lists.ozlabs.org
In-Reply-To: <D07C73A334FF604B95B3CBD2A545D07B0B1265B9@039-SN2MPN1-013.039d.mgd.msft.net>
On Sun, Apr 07, 2013 at 10:30:41AM +0800, Tang Yuantian-B29983 wrote:
> Also send this patch to cpufreq@vger.kernel.org and linux-pm@vger.kerne=
l.org
> And better to rebase it on git://git.kernel.org/pub/scm/linux/kernel/gi=
t/rafael/linux-pm.git
>=20
> Thanks,
> Yuantian
OK. Thanks.
-Chenhui
>=20
> > -----Original Message-----
> > From: Linuxppc-dev [mailto:linuxppc-dev-
> > bounces+b29983=3Dfreescale.com@lists.ozlabs.org] On Behalf Of Zhao Ch=
enhui
> > Sent: 2013=E5=B9=B44=E6=9C=883=E6=97=A5 21:09
> > To: linuxppc-dev@lists.ozlabs.org
> > Subject: [PATCH 08/17] powerpc/85xx: add support to JOG feature using
> > cpufreq interface
> >=20
> > From: chenhui zhao <chenhui.zhao@freescale.com>
> >=20
> > Some MPC85xx SoCs like MPC8536 and P1022 have a JOG feature, which
> > provides a dynamic mechanism to lower or raise the CPU core clock at
> > runtime.
> >=20
> > This patch adds the support to change CPU frequency using the standar=
d
> > cpufreq interface. The ratio CORE to CCB can be 1:1(except MPC8536), =
3:2,
> > 2:1, 5:2, 3:1, 7:2 and 4:1.
> >=20
> > Two CPU cores on P1022 must not in the low power state during the
> > frequency transition. The driver uses a flag to meet the requirement.
> >=20
> > The jog mode frequency transition process on the MPC8536 is similar t=
o
> > the deep sleep process. The driver need save the CPU state and restor=
e it
> > after CPU warm reset.
> >=20
> > Note:
> > * The I/O peripherals such as PCIe and eTSEC may lose packets during
> > the jog mode frequency transition.
> > * The driver doesn't support MPC8536 Rev 1.0 due to a JOG erratum.
> > Subsequent revisions of MPC8536 have corrected the erratum.
> >=20
> > Signed-off-by: Dave Liu <daveliu@freescale.com>
> > Signed-off-by: Li Yang <leoli@freescale.com>
> > Signed-off-by: Jerry Huang <Chang-Ming.Huang@freescale.com>
> > Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
^ permalink raw reply
* RE: [PATCH v2 1/4] powerpc/mpic: add irq_set_wake support
From: Wang Dongsheng-B40534 @ 2013-04-07 3:40 UTC (permalink / raw)
To: Wood Scott-B07421; +Cc: linuxppc-dev@lists.ozlabs.org
In-Reply-To: <1364949416.24520.30@snotra>
> -----Original Message-----
> From: Wang Dongsheng-B40534
> Sent: Wednesday, April 03, 2013 10:49 AM
> To: Wood Scott-B07421
> Cc: linuxppc-dev@lists.ozlabs.org
> Subject: RE: [PATCH v2 1/4] powerpc/mpic: add irq_set_wake support
>=20
>=20
>=20
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Wednesday, April 03, 2013 8:37 AM
> > To: Wang Dongsheng-B40534
> > Cc: linuxppc-dev@lists.ozlabs.org; Wang Dongsheng-B40534
> > Subject: Re: [PATCH v2 1/4] powerpc/mpic: add irq_set_wake support
> >
> > On 04/02/2013 01:40:37 AM, Wang Dongsheng wrote:
> > > Add irq_set_wake support. Just add IRQF_NO_SUSPEND to
> > > desc->action->flag.
> > > So the wake up interrupt will not be disable in suspend_device_irqs.
> > >
> > > Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
> > > ---
> > > v2:
> > > * Add: Check freescale chip in mpic_irq_set_wake().
> > > * Remove: Support mpic_irq_set_wake() in ht_chip.
> > >
> > > arch/powerpc/sysdev/mpic.c | 18 ++++++++++++++++++
> > > 1 file changed, 18 insertions(+)
> > >
> > > diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> > > index 3b2efd4..50d1ee1 100644
> > > --- a/arch/powerpc/sysdev/mpic.c
> > > +++ b/arch/powerpc/sysdev/mpic.c
> > > @@ -920,6 +920,22 @@ int mpic_set_irq_type(struct irq_data *d,
> > > unsigned int flow_type)
> > > return IRQ_SET_MASK_OK_NOCOPY;
> > > }
> > >
> > > +static int mpic_irq_set_wake(struct irq_data *d, unsigned int on) {
> > > + struct irq_desc *desc =3D container_of(d, struct irq_desc,
> > > irq_data);
> > > + struct mpic *mpic =3D mpic_from_irq_data(d);
> > > +
> > > + if (!(mpic->flags & MPIC_FSL))
> > > + return -EINVAL;
> >
> > I was thinking more along the lines of using MPIC_FSL during init to
> > decide whether to write this function to .irq_set_wake,
>=20
> I think the static registration method is more reasonable. We must
> consider readability. And mpic_irq_set_wake() will not be frequent calls.
> So within
> mpic_irq_set_wake() to decide is reasonable.
>=20
> > though that could probably wait until there's a second type of MPIC
> > that needs this (if ever).
> Even if the mpic_irq_set_wake() register in the first type of MPIC that
> is not belong MPIC_FSL, the function can return errno. I think the errno
> should be "-ENXIO".
> See kernel/irq/manage.c, set_irq_wake_real() the return value.
> The desc->irq_data.chip->irq_set_wake is null, the errno is -ENXIO.
>=20
> s/-EINVAL/-ENXIO/
About patches, if there are no other suggestion I'll send the V3.
^ permalink raw reply
* Re: powerpc userspace address space layout information
From: David Gibson @ 2013-04-07 5:58 UTC (permalink / raw)
To: Chris Friesen; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <515E58E6.9030802@genband.com>
[-- Attachment #1: Type: text/plain, Size: 4084 bytes --]
On Thu, Apr 04, 2013 at 10:53:58PM -0600, Chris Friesen wrote:
>
> Hi,
>
> I'm running with glibc 2.11 on a 2.6.34 kernel. 32-bit userspace on 64-bit kernel.
>
> On a complicated process the memory map looks something like this:
>
> <vdso, executable, heap, etc.>
> 5b2c000-f5b38000 r-xp 00000000 00:0f 3636 /lib/libnss_files-2.11.1.so
> <lots of libraries snipped>
> f6026000-f6035000 ---p 00096000 00:0f 3628 /lib/libkrb5.so.3.3
> <lots of libraries snipped>
> f7902000-f7905000 r-xp 00000000 00:0f 3607 /lib/libdl-2.11.1.so
> f7905000-f7914000 ---p 00003000 00:0f 3607 /lib/libdl-2.11.1.so
> f7914000-f7915000 r--p 00002000 00:0f 3607 /lib/libdl-2.11.1.so
> f7915000-f7916000 rw-p 00003000 00:0f 3607 /lib/libdl-2.11.1.so
> f7918000-f7919000 rw-p 00000000 00:00 0
> f7919000-f791a000 r--p 0001a000 00:0f 3646 /lib/libpthread-2.11.1.so
> f791a000-f791b000 r--p 00001000 00:0f 2306001 /path/to/binary
> f791b000-f791c000 r--p 00001000 00:0f 2306001 /path/to/binary
> f791c000-f791d000 r--p 00001000 00:0f 2306001 /path/to/binary
> f791d000-f7923000 rw-p 00000000 00:00 0
> f7923000-f7943000 r-xp 00000000 00:0f 13323 /lib/ld-2.11.1.so
> f7943000-f7944000 r--p 00020000 00:0f 13323 /lib/ld-2.11.1.so
> f7944000-f7945000 rw-p 00021000 00:0f 13323 /lib/ld-2.11.1.so
> f9000000-fac01000 rw-p 00000000 00:00 0
> fac06000-fac07000 rw-s 00000000 00:04 327690 /SYSV41050355 (deleted)
> fad00000-fae00000 rw-s 00000000 00:04 98307 /SYSVee113d3f (deleted)
> fae00000-fb000000 rw-s 00000000 00:04 7503872 /SYSVc5050355 (deleted)
> fb000000-fb200000 rw-s 00000000 00:04 7536641 /SYSV5c050355 (deleted)
> fb200000-fb600000 rw-s 00000000 00:0d 30647 /var/log/blah
> ffa8e000-ffab0000 rwxp 00000000 00:00 0 [stack]
>
>
> I have a few questions I'm hoping someone can help me with.
>
> First, what determines where /lib/ld-2.11.1.so gets mapped? It seems like
> it never goes above 0xf8000000 or so.
I think the mapping in of the ELF interpreter just calls the mmap()
code without hint address, so it goes where get_unmapped_area() puts
things by default, which can depend on a number of configuration settings.
> Second, what is the mapping at 0xf9000000-0xfac01000? Is this just empty
> space or is it reserved for something in particular?
Looks like anonymous memory, which could have been mapped by your
program or any of the libraries.
> Third, what's the most reliable way to ensure a block of addresses around
> 0xf6000000 don't get used for shared libraries? (We want to preserve
> those addresses for emulating hardware in a virtual machine.) We have
> this working on an older system but after upgrading to new software the
> libraries now extend further down the address space.
The only reliable method I can think of would be to use a custom
linker script to give your binary an extra program header specifying
that virtual region to map. In theory it can have zero size, and
whatever mem size you need to avoid adding any data to the binary
itself. In practice you may need to set a (small) non-zero filesize,
since some kernel versions had bugs handling segments with zero
filesize.
That would bring your program up with anonymous memory mapped across
the "reserved" region. You could then remap over it using MAP_FIXED
for the stuff you really want.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply
* [PATCH V4] powerpc/MPIC: Add get_version API both for internal and external use
From: Jia Hongtao @ 2013-04-08 2:01 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: B07421, hongtao.jia
MPIC version is useful information for both mpic_alloc() and mpic_init().
The patch provide an API to get MPIC version for reusing the code.
Also, some other IP block may need MPIC version for their own use.
The API for external use is also provided.
Signed-off-by: Jia Hongtao <hongtao.jia@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
Changes for V4:
* change the name of function from mpic_get_version() to
fsl_mpic_get_version().
Changes for V3:
* change the name of function from mpic_primary_get_version() to
fsl_mpic_primary_get_version().
* return 0 if mpic_primary is null.
Changes for V2:
* Using mpic_get_version() to implement mpic_primary_get_version()
arch/powerpc/include/asm/mpic.h | 3 +++
arch/powerpc/sysdev/mpic.c | 29 ++++++++++++++++++++++-------
2 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/include/asm/mpic.h b/arch/powerpc/include/asm/mpic.h
index c0f9ef9..ea6bf72 100644
--- a/arch/powerpc/include/asm/mpic.h
+++ b/arch/powerpc/include/asm/mpic.h
@@ -393,6 +393,9 @@ struct mpic
#define MPIC_REGSET_STANDARD MPIC_REGSET(0) /* Original MPIC */
#define MPIC_REGSET_TSI108 MPIC_REGSET(1) /* Tsi108/109 PIC */
+/* Get the version of primary MPIC */
+extern u32 fsl_mpic_primary_get_version(void);
+
/* Allocate the controller structure and setup the linux irq descs
* for the range if interrupts passed in. No HW initialization is
* actually performed.
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index d30e6a6..48c8fae 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1165,10 +1165,30 @@ static struct irq_domain_ops mpic_host_ops = {
.xlate = mpic_host_xlate,
};
+static u32 fsl_mpic_get_version(struct mpic *mpic)
+{
+ u32 brr1;
+
+ brr1 = _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
+ MPIC_FSL_BRR1);
+
+ return brr1 & MPIC_FSL_BRR1_VER;
+}
+
/*
* Exported functions
*/
+u32 fsl_mpic_primary_get_version(void)
+{
+ struct mpic *mpic = mpic_primary;
+
+ if (mpic)
+ return fsl_mpic_get_version(mpic);
+
+ return 0;
+}
+
struct mpic * __init mpic_alloc(struct device_node *node,
phys_addr_t phys_addr,
unsigned int flags,
@@ -1315,7 +1335,6 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic_map(mpic, mpic->paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
if (mpic->flags & MPIC_FSL) {
- u32 brr1;
int ret;
/*
@@ -1326,9 +1345,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic_map(mpic, mpic->paddr, &mpic->thiscpuregs,
MPIC_CPU_THISBASE, 0x1000);
- brr1 = _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
- MPIC_FSL_BRR1);
- fsl_version = brr1 & MPIC_FSL_BRR1_VER;
+ fsl_version = fsl_mpic_get_version(mpic);
/* Error interrupt mask register (EIMR) is required for
* handling individual device error interrupts. EIMR
@@ -1518,9 +1535,7 @@ void __init mpic_init(struct mpic *mpic)
mpic_cpu_write(MPIC_INFO(CPU_CURRENT_TASK_PRI), 0xf);
if (mpic->flags & MPIC_FSL) {
- u32 brr1 = _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
- MPIC_FSL_BRR1);
- u32 version = brr1 & MPIC_FSL_BRR1_VER;
+ u32 version = fsl_mpic_get_version(mpic);
/*
* Timer group B is present at the latest in MPIC 3.1 (e.g.
--
1.8.0
^ permalink raw reply related
* RE: [PATCH 1/4][v2] powerpc/fsl-booke: Add initial silicon device tree files for B4860 and B4420
From: Leekha Shaveta-B20052 @ 2013-04-08 4:48 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev@lists.ozlabs.org list
In-Reply-To: <62911773-1FC6-49B5-993F-88DD0F8F845A@kernel.crashing.org>
-----Original Message-----
From: Leekha Shaveta-B20052=20
Sent: Friday, April 05, 2013 9:13 PM
To: 'Kumar Gala'
Cc: linuxppc-dev@lists.ozlabs.org list
Subject: RE: [PATCH 1/4][v2] powerpc/fsl-booke: Add initial silicon device =
tree files for B4860 and B4420
-----Original Message-----
From: Kumar Gala [mailto:galak@kernel.crashing.org]=20
Sent: Friday, April 05, 2013 7:53 PM
To: Leekha Shaveta-B20052
Cc: linuxppc-dev@lists.ozlabs.org list
Subject: Re: [PATCH 1/4][v2] powerpc/fsl-booke: Add initial silicon device =
tree files for B4860 and B4420
On Apr 5, 2013, at 1:33 AM, Shaveta Leekha wrote:
> B4860 and B4420 are similar that share some commonalities
>=20
> * common features have been added in b4si-pre.dtsi and b4si-post.dtsi
> * differences are added in respective silicon files of B4860 and B4420
>=20
> There are several things missing from the device trees of B4860 and B4420=
:
>=20
> * DPAA related nodes (Qman, Bman, Fman, Rman)
> * DSP related nodes/information
> * serdes, sfp(security fuse processor), thermal, gpio, maple, cpri,=20
> quad timers nodes
>=20
> Signed-off-by: Shaveta Leekha <shaveta@freescale.com>
> Signed-off-by: Zhao Chenhui <chenhui.zhao@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
> Signed-off-by: Varun Sethi <Varun.Sethi@freescale.com>
> Signed-off-by: Minghuan Lian <Minghuan.Lian@freescale.com>
> Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> Signed-off-by: Andy Fleming <afleming@freescale.com>
> Signed-off-by: Vakul Garg <vakul@freescale.com>
> ---
> v2:=20
> - incorporated review comments on commits message
> - change unit address of cpu nodes to match the reg property
>=20
> arch/powerpc/boot/dts/fsl/b4420si-post.dtsi | 94 ++++++++++
> arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi | 49 +++++
> arch/powerpc/boot/dts/fsl/b4860si-post.dtsi | 138 ++++++++++++++
> arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi | 59 ++++++
> arch/powerpc/boot/dts/fsl/b4si-post.dtsi | 262 ++++++++++++++++++++++=
+++++
> arch/powerpc/boot/dts/fsl/b4si-pre.dtsi | 65 +++++++
> 6 files changed, 667 insertions(+), 0 deletions(-) create mode 100644=20
> arch/powerpc/boot/dts/fsl/b4420si-post.dtsi
> create mode 100644 arch/powerpc/boot/dts/fsl/b4420si-pre.dtsi
> create mode 100644 arch/powerpc/boot/dts/fsl/b4860si-post.dtsi
> create mode 100644 arch/powerpc/boot/dts/fsl/b4860si-pre.dtsi
> create mode 100644 arch/powerpc/boot/dts/fsl/b4si-post.dtsi
> create mode 100644 arch/powerpc/boot/dts/fsl/b4si-pre.dtsi
Is there a reason you didn't get rid of b4si-pre.dtsi and just merge it int=
o b4860si-pre.dtsi & b4420-pre.dtsi?
[SL] No particular reason. I have just tried to re-factored these files as =
you have suggested. Hence managed the commonalities in B4 files and differe=
nces in B4860's and B4420's respective files to reduce duplicity.
Regards,
Shaveta=20
[SL] Kumar, please suggest.=20
Regards,
Shaveta
^ permalink raw reply
* Re: [PATCH 3/3] powerpc: Set default VGA device
From: Michael Ellerman @ 2013-04-08 5:21 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: linux-pci@vger.kernel.org, klebers, sparclinux,
Lucas Kannebley Tavares, Brian King, linuxppc-dev
In-Reply-To: <CAErSpo4LsJjRkw6UektwqW8m1NXdU6BTjhTDA9eORM3z3qDcdA@mail.gmail.com>
On Fri, Apr 05, 2013 at 02:24:09PM -0600, Bjorn Helgaas wrote:
> On Thu, Apr 4, 2013 at 3:58 PM, Brian King <brking@linux.vnet.ibm.com> wrote:
> > @@ -1725,3 +1726,15 @@ static void fixup_hide_host_resource_fsl
> > }
> > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MOTOROLA, PCI_ANY_ID, fixup_hide_host_resource_fsl);
> > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID, fixup_hide_host_resource_fsl);
> > +
> > +static void fixup_vga(struct pci_dev *pdev)
> > +{
> > + u16 cmd;
> > +
> > + pci_read_config_word(pdev, PCI_COMMAND, &cmd);
> > + if ((cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) || !vga_default_device())
> > + vga_set_default_device(pdev);
> > +
> > +}
> > +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
> > + PCI_CLASS_DISPLAY_VGA, 8, fixup_vga);
>
> This not really an arch-specific issue, so it's a shame to add another
> arch-specific quirk for it (in addition to the x86 and ia64 ones we
> already have).
>
> In b5e4efe7e0, Eiichiro Oiwa <eiichiro.oiwa.nm@hitachi.com> tried to
> make this quirk generic, but the implementation was naive and it
> didn't work for sparc64. There's a good thread about the sparc issue
> at https://lkml.org/lkml/2006/10/19/17
>
> The outcome was to basically revert back to arch-specific quirks with
> 6b5c76b8e2, but I think the generic version probably could have been
> made to work, possibly with a pcibios hook or something for anything
> that really is arch-dependent, like the shadowed ROM image.
>
> This particular patch is arch-specific, and I'm not going to try to
> nack it because I'm not the powerpc maintainer, but I will certainly
> try to help you if you want to push on making a generic version.
OK.
Looking at x86, ia64 and ours, there's a fair bit of difference.
x86/ia64 both walk up the parents checking PCI_BRIDGE_CTL_VGA, which
powerpc doesn't (though maybe it should?).
x86/ia64 set IORESOURCE_ROM_SHADOW, which powerpc doesn't.
ia64 doesn't call vga_set_default_device(), x86 and powerpc do.
So we'll merge this and maybe someone can tease out the common bits, but
personally I don't see that there's an obvious chunk of generic logic.
cheers
^ permalink raw reply
* Re: [PATCH 2/3] powerpc: Enable boot_vga sysfs attribute for graphics adapters on Power
From: Michael Ellerman @ 2013-04-08 5:25 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: linux-pci@vger.kernel.org, klebers, sparclinux,
Lucas Kannebley Tavares, Brian King, linuxppc-dev
In-Reply-To: <CAErSpo5ReUcSPvyBs_u0HLh=90anEREZn4p6EUX4yO52bDBaeg@mail.gmail.com>
On Fri, Apr 05, 2013 at 02:11:01PM -0600, Bjorn Helgaas wrote:
> On Thu, Apr 4, 2013 at 3:58 PM, Brian King <brking@linux.vnet.ibm.com> wrote:
> >
> > Initialize dev->dev.type such that the PCI group attributes for boot_vga
> > and SR-IOV can be displayed if appropriate. This fixes an issue seen on
> > Power preventing X from auto initializing a graphics adapter when using KMS.
> >
> > Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
> > ---
> >
> > arch/powerpc/kernel/pci_of_scan.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff -puN arch/powerpc/kernel/pci_of_scan.c~powerpc_set_pci_dev_type arch/powerpc/kernel/pci_of_scan.c
> > --- linux/arch/powerpc/kernel/pci_of_scan.c~powerpc_set_pci_dev_type 2013-04-03 09:43:19.000000000 -0500
> > +++ linux-bjking1/arch/powerpc/kernel/pci_of_scan.c 2013-04-03 09:43:19.000000000 -0500
> > @@ -141,6 +141,7 @@ struct pci_dev *of_create_pci_dev(struct
> > dev->dev.of_node = of_node_get(node);
> > dev->dev.parent = bus->bridge;
> > dev->dev.bus = &pci_bus_type;
> > + dev->dev.type = &pci_dev_type;
> > dev->devfn = devfn;
> > dev->multifunction = 0; /* maybe a lie? */
> > dev->needs_freset = 0; /* pcie fundamental reset required */
>
> I think sparc has the same issue in its own copy of of_create_pci_dev().
>
> Of course, both of_create_pci_dev() implementations are basically
> copies of the generic pci_setup_device() that most arches use. That's
> the reason why I wish sparc and powerpc had used config space
> accessors that hid the OF mangling internally so they could use the
> generic pci_setup_device() instead of cloning it.
>
> Of course, they don't, and that's too much work for fixing this issue,
> but if anybody wanted to work on that, I think it would be an
> interesting project.
>
> But what if you set dev->dev.type in alloc_pci_dev()? I think if you
> did that, you wouldn't need to export "pci_dev_type," and it should
> fix this for both powerpc and sparc.
That sounds good, Brian can you confirm that works and send a new series
using that technique.
cheers
^ permalink raw reply
* Re: [PATCH 3/3] powerpc: Set default VGA device
From: Benjamin Herrenschmidt @ 2013-04-08 6:39 UTC (permalink / raw)
To: Michael Ellerman
Cc: sparclinux, linux-pci@vger.kernel.org, klebers, Brian King,
Lucas Kannebley Tavares, Bjorn Helgaas, linuxppc-dev
In-Reply-To: <20130408052124.GA9550@concordia>
On Mon, 2013-04-08 at 15:21 +1000, Michael Ellerman wrote:
> Looking at x86, ia64 and ours, there's a fair bit of difference.
>
> x86/ia64 both walk up the parents checking PCI_BRIDGE_CTL_VGA, which
> powerpc doesn't (though maybe it should?).
Unclear for several reasons.
That bit indicates that the bridge forwards the hard coded legacy VGA IO
ports and memory aperture. These are not necessary to get modern video
cards going. Only if legacy modes are used.
On x86, that tends to be the case (is it always even with EFI
nowadays ?).
On other architectures that is not necessarily the case. The firmware
can (and will) initialize the card using MMIO entirely and even if
possible disabling the legacy stuff, which means that turning those bits
on in the bridge is also unnecessary.
In fact, on such setups, the isn't really a concept of a "primary" video
card to begin with.
On the other hand, that also means that a video card initialized like
that is pretty much out of the grasp of the vga arbiter which has no
effect on it either.
Also be careful that while it may be relevant on x86, the VGA fwd bit is
not on the PCIe root complex on IBM machines.
Finally, P8 has no IO space at all...
> x86/ia64 set IORESOURCE_ROM_SHADOW, which powerpc doesn't.
>
> ia64 doesn't call vga_set_default_device(), x86 and powerpc do.
>
> So we'll merge this and maybe someone can tease out the common bits, but
> personally I don't see that there's an obvious chunk of generic logic.
Cheers,
Ben.
^ permalink raw reply
* [git pull] Please pull another powerpc fix
From: Stephen Rothwell @ 2013-04-08 7:54 UTC (permalink / raw)
To: Linus; +Cc: Michael Wolf, ppc-dev, paulus, LKML
[-- Attachment #1: Type: text/plain, Size: 1046 bytes --]
The following changes since commit 875b7679abbb232b584f2eec59fa6e45690dd6c4:
Merge git://git.kernel.org/pub/scm/virt/kvm/kvm (2013-04-07 13:01:25 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/sfr/next-fixes.git tags/for-linus
for you to fetch changes up to 9fb2640159f9d4f5a2a9d60e490482d4cbecafdb:
powerpc: pSeries_lpar_hpte_remove fails from Adjunct partition being performed before the ANDCOND test (2013-04-08 15:19:09 +1000)
----------------------------------------------------------------
A single BUG_ON fix for a condition that could happen for machines with
certain hardware installed.
----------------------------------------------------------------
Michael Wolf (1):
powerpc: pSeries_lpar_hpte_remove fails from Adjunct partition being performed before the ANDCOND test
arch/powerpc/platforms/pseries/lpar.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
* Re: [RFC][PATCH 2/2] powerpc/fsl-pci Make PCIe hotplug work with Freescale
From: Rojhalat Ibrahim @ 2013-04-08 8:15 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev
In-Reply-To: <CE155C19-35DF-4394-9608-BF923B5DA6EB@kernel.crashing.org>
Up to now the PCIe link status on Freescale PCIe controllers was only
checked once at boot time. So hotplug did not work. With this patch the
link status is checked on every config read. PCIe devices not present at
boot time are found after doing 'echo 1 >/sys/bus/pci/rescan'.
Signed-off-by: Rojhalat Ibrahim <imr@rtschenk.de>
---
arch/powerpc/include/asm/pci-bridge.h | 6 ++++
arch/powerpc/sysdev/fsl_pci.c | 51 +++++++++++++++++++++++++++++-----
arch/powerpc/sysdev/indirect_pci.c | 10 ++----
3 files changed, 54 insertions(+), 13 deletions(-)
diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
index c0278f0..ffbc5fd 100644
--- a/arch/powerpc/include/asm/pci-bridge.h
+++ b/arch/powerpc/include/asm/pci-bridge.h
@@ -120,6 +120,12 @@ extern void setup_indirect_pci(struct pci_controller* hose,
resource_size_t cfg_addr,
resource_size_t cfg_data, u32 flags);
+extern int indirect_read_config(struct pci_bus *bus, unsigned int devfn,
+ int offset, int len, u32 *val);
+
+extern int indirect_write_config(struct pci_bus *bus, unsigned int devfn,
+ int offset, int len, u32 val);
+
static inline struct pci_controller *pci_bus_to_host(const struct pci_bus *bus)
{
return bus->sysdata;
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 83918c3..82e3317 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -54,12 +54,22 @@ static void quirk_fsl_pcie_header(struct pci_dev *dev)
return;
}
-static int __init fsl_pcie_check_link(struct pci_controller *hose)
+static int fsl_indirect_read_config(struct pci_bus *, unsigned int,
+ int, int, u32 *);
+
+static int fsl_pcie_check_link(struct pci_controller *hose)
{
- u32 val;
+ u32 val = 0;
if (hose->indirect_type & PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK) {
- early_read_config_dword(hose, 0, 0, PCIE_LTSSM, &val);
+ if (hose->ops->read == fsl_indirect_read_config) {
+ struct pci_bus bus;
+ bus.number = 0;
+ bus.sysdata = hose;
+ bus.ops = hose->ops;
+ indirect_read_config(&bus, 0, PCIE_LTSSM, 4, &val);
+ } else
+ early_read_config_dword(hose, 0, 0, PCIE_LTSSM, &val);
if (val < PCIE_LTSSM_L0)
return 1;
} else {
@@ -74,6 +84,33 @@ static int __init fsl_pcie_check_link(struct pci_controller *hose)
return 0;
}
+static int fsl_indirect_read_config(struct pci_bus *bus, unsigned int devfn,
+ int offset, int len, u32 *val)
+{
+ struct pci_controller *hose = pci_bus_to_host(bus);
+
+ if (fsl_pcie_check_link(hose))
+ hose->indirect_type |= PPC_INDIRECT_TYPE_NO_PCIE_LINK;
+ else
+ hose->indirect_type &= ~PPC_INDIRECT_TYPE_NO_PCIE_LINK;
+
+ return indirect_read_config(bus, devfn, offset, len, val);
+}
+
+static struct pci_ops fsl_indirect_pci_ops =
+{
+ .read = fsl_indirect_read_config,
+ .write = indirect_write_config,
+};
+
+static void __init fsl_setup_indirect_pci(struct pci_controller* hose,
+ resource_size_t cfg_addr,
+ resource_size_t cfg_data, u32 flags)
+{
+ setup_indirect_pci(hose, cfg_addr, cfg_data, flags);
+ hose->ops = &fsl_indirect_pci_ops;
+}
+
#if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx)
#define MAX_PHYS_ADDR_BITS 40
@@ -469,8 +506,8 @@ int __init fsl_add_bridge(struct platform_device *pdev, int is_primary)
if (!hose->private_data)
goto no_bridge;
- setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
- PPC_INDIRECT_TYPE_BIG_ENDIAN);
+ fsl_setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
+ PPC_INDIRECT_TYPE_BIG_ENDIAN);
if (in_be32(&pci->block_rev1) < PCIE_IP_REV_3_0)
hose->indirect_type |= PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK;
@@ -779,8 +816,8 @@ int __init mpc83xx_add_bridge(struct device_node *dev)
if (ret)
goto err0;
} else {
- setup_indirect_pci(hose, rsrc_cfg.start,
- rsrc_cfg.start + 4, 0);
+ fsl_setup_indirect_pci(hose, rsrc_cfg.start,
+ rsrc_cfg.start + 4, 0);
}
printk(KERN_INFO "Found FSL PCI host bridge at 0x%016llx. "
diff --git a/arch/powerpc/sysdev/indirect_pci.c b/arch/powerpc/sysdev/indirect_pci.c
index 82fdad8..c6c8b52 100644
--- a/arch/powerpc/sysdev/indirect_pci.c
+++ b/arch/powerpc/sysdev/indirect_pci.c
@@ -20,9 +20,8 @@
#include <asm/pci-bridge.h>
#include <asm/machdep.h>
-static int
-indirect_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
- int len, u32 *val)
+int indirect_read_config(struct pci_bus *bus, unsigned int devfn,
+ int offset, int len, u32 *val)
{
struct pci_controller *hose = pci_bus_to_host(bus);
volatile void __iomem *cfg_data;
@@ -78,9 +77,8 @@ indirect_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
return PCIBIOS_SUCCESSFUL;
}
-static int
-indirect_write_config(struct pci_bus *bus, unsigned int devfn, int offset,
- int len, u32 val)
+int indirect_write_config(struct pci_bus *bus, unsigned int devfn,
+ int offset, int len, u32 val)
{
struct pci_controller *hose = pci_bus_to_host(bus);
volatile void __iomem *cfg_data;
---
1.8.1.5
^ permalink raw reply related
* Re: [RFC][PATCH 1/2] powerpc/fsl-pci: Keep PCI SoC controller registers in
From: Rojhalat Ibrahim @ 2013-04-08 8:20 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <1363201636-7318-1-git-send-email-galak@kernel.crashing.org>
On Wednesday 13 March 2013 14:07:15 Kumar Gala wrote:
> Move to keeping the SoC registers that control and config the PCI
> controllers on FSL SoCs in the pci_controller struct. This allows us to
> not need to ioremap() the registers in multiple different places that
> use them.
>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Acked-by: Rojhalat Ibrahim <imr@rtschenk.de>
> ---
> arch/powerpc/include/asm/pci-bridge.h | 5 ++-
> arch/powerpc/sysdev/fsl_pci.c | 69
> ++++++++++++++------------------- 2 files changed, 34 insertions(+), 40
> deletions(-)
>
> diff --git a/arch/powerpc/include/asm/pci-bridge.h
> b/arch/powerpc/include/asm/pci-bridge.h index 025a130..c0278f0 100644
> --- a/arch/powerpc/include/asm/pci-bridge.h
> +++ b/arch/powerpc/include/asm/pci-bridge.h
> @@ -70,6 +70,8 @@ struct pci_controller {
> * BIG_ENDIAN - cfg_addr is a big endian register
> * BROKEN_MRM - the 440EPx/GRx chips have an errata that causes hangs on
> * the PLB4. Effectively disable MRM commands by setting this.
> + * FSL_CFG_REG_LINK - Freescale controller version in which the PCIe
> + * link status is in a RC PCIe cfg register (vs being a SoC register)
> */
> #define PPC_INDIRECT_TYPE_SET_CFG_TYPE 0x00000001
> #define PPC_INDIRECT_TYPE_EXT_REG 0x00000002
> @@ -77,6 +79,7 @@ struct pci_controller {
> #define PPC_INDIRECT_TYPE_NO_PCIE_LINK 0x00000008
> #define PPC_INDIRECT_TYPE_BIG_ENDIAN 0x00000010
> #define PPC_INDIRECT_TYPE_BROKEN_MRM 0x00000020
> +#define PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK 0x00000040
> u32 indirect_type;
> /* Currently, we limit ourselves to 1 IO range and 3 mem
> * ranges since the common pci_bus structure can't handle more
> @@ -90,9 +93,9 @@ struct pci_controller {
>
> #ifdef CONFIG_PPC64
> unsigned long buid;
> +#endif /* CONFIG_PPC64 */
>
> void *private_data;
> -#endif /* CONFIG_PPC64 */
> };
>
> /* These are used for config access before all the PCI probing
> diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
> index 3271177..41bbcc4 100644
> --- a/arch/powerpc/sysdev/fsl_pci.c
> +++ b/arch/powerpc/sysdev/fsl_pci.c
> @@ -54,34 +54,22 @@ static void quirk_fsl_pcie_header(struct pci_dev *dev)
> return;
> }
>
> -static int __init fsl_pcie_check_link(struct pci_controller *hose,
> - struct resource *rsrc)
> +static int __init fsl_pcie_check_link(struct pci_controller *hose)
> {
> - struct ccsr_pci __iomem *pci = NULL;
> u32 val;
>
> - /* for PCIe IP rev 3.0 or greater use CSR0 for link state */
> - if (rsrc) {
> - pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n",
> - (u64)rsrc->start, (u64)rsrc->end - (u64)rsrc->start + 1);
> - pci = ioremap(rsrc->start, rsrc->end - rsrc->start + 1);
> - if (!pci) {
> - dev_err(hose->parent, "Unable to map PCIe registers\n");
> - return -ENOMEM;
> - }
> - if (in_be32(&pci->block_rev1) >= PCIE_IP_REV_3_0) {
> - val = (in_be32(&pci->pex_csr0) & PEX_CSR0_LTSSM_MASK)
> - >> PEX_CSR0_LTSSM_SHIFT;
> - if (val != PEX_CSR0_LTSSM_L0)
> - return 1;
> - iounmap(pci);
> - return 0;
> - }
> - iounmap(pci);
> + if (hose->indirect_type & PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK) {
> + early_read_config_dword(hose, 0, 0, PCIE_LTSSM, &val);
> + if (val < PCIE_LTSSM_L0)
> + return 1;
> + } else {
> + struct ccsr_pci __iomem *pci = hose->private_data;
> + /* for PCIe IP rev 3.0 or greater use CSR0 for link state */
> + val = (in_be32(&pci->pex_csr0) & PEX_CSR0_LTSSM_MASK)
> + >> PEX_CSR0_LTSSM_SHIFT;
> + if (val != PEX_CSR0_LTSSM_L0)
> + return 1;
> }
> - early_read_config_dword(hose, 0, 0, PCIE_LTSSM, &val);
> - if (val < PCIE_LTSSM_L0)
> - return 1;
>
> return 0;
> }
> @@ -148,10 +136,9 @@ static int setup_one_atmu(struct ccsr_pci __iomem *pci,
> }
>
> /* atmu setup for fsl pci/pcie controller */
> -static void setup_pci_atmu(struct pci_controller *hose,
> - struct resource *rsrc)
> +static void setup_pci_atmu(struct pci_controller *hose)
> {
> - struct ccsr_pci __iomem *pci;
> + struct ccsr_pci __iomem *pci = hose->private_data;
> int i, j, n, mem_log, win_idx = 3, start_idx = 1, end_idx = 4;
> u64 mem, sz, paddr_hi = 0;
> u64 paddr_lo = ULLONG_MAX;
> @@ -162,15 +149,6 @@ static void setup_pci_atmu(struct pci_controller *hose,
> const u64 *reg;
> int len;
>
> - pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n",
> - (u64)rsrc->start, (u64)resource_size(rsrc));
> -
> - pci = ioremap(rsrc->start, resource_size(rsrc));
> - if (!pci) {
> - dev_err(hose->parent, "Unable to map ATMU registers\n");
> - return;
> - }
> -
> if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) {
> if (in_be32(&pci->block_rev1) >= PCIE_IP_REV_2_2) {
> win_idx = 2;
> @@ -451,6 +429,7 @@ int __init fsl_add_bridge(struct platform_device *pdev,
> int is_primary) const int *bus_range;
> u8 hdr_type, progif;
> struct device_node *dev;
> + struct ccsr_pci __iomem *pci;
>
> dev = pdev->dev.of_node;
>
> @@ -483,9 +462,19 @@ int __init fsl_add_bridge(struct platform_device *pdev,
> int is_primary) hose->first_busno = bus_range ? bus_range[0] : 0x0;
> hose->last_busno = bus_range ? bus_range[1] : 0xff;
>
> + pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n",
> + (u64)rsrc.start, (u64)resource_size(&rsrc));
> +
> + pci = hose->private_data = ioremap(rsrc.start, resource_size(&rsrc));
> + if (!hose->private_data)
> + goto no_bridge;
> +
> setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
> PPC_INDIRECT_TYPE_BIG_ENDIAN);
>
> + if (in_be32(&pci->block_rev1) < PCIE_IP_REV_3_0)
> + hose->indirect_type |= PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK;
> +
> if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) {
> /* For PCIE read HEADER_TYPE to identify controler mode */
> early_read_config_byte(hose, 0, 0, PCI_HEADER_TYPE, &hdr_type);
> @@ -505,7 +494,7 @@ int __init fsl_add_bridge(struct platform_device *pdev,
> int is_primary) if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) {
> hose->indirect_type |= PPC_INDIRECT_TYPE_EXT_REG |
> PPC_INDIRECT_TYPE_SURPRESS_PRIMARY_BUS;
> - if (fsl_pcie_check_link(hose, &rsrc))
> + if (fsl_pcie_check_link(hose))
> hose->indirect_type |= PPC_INDIRECT_TYPE_NO_PCIE_LINK;
> }
>
> @@ -522,11 +511,12 @@ int __init fsl_add_bridge(struct platform_device
> *pdev, int is_primary) pci_process_bridge_OF_ranges(hose, dev, is_primary);
>
> /* Setup PEX window registers */
> - setup_pci_atmu(hose, &rsrc);
> + setup_pci_atmu(hose);
>
> return 0;
>
> no_bridge:
> + iounmap(hose->private_data);
> /* unmap cfg_data & cfg_addr separately if not on same page */
> if (((unsigned long)hose->cfg_data & PAGE_MASK) !=
> ((unsigned long)hose->cfg_addr & PAGE_MASK))
> @@ -703,11 +693,12 @@ static int __init mpc83xx_pcie_setup(struct
> pci_controller *hose, WARN_ON(hose->dn->data);
> hose->dn->data = pcie;
> hose->ops = &mpc83xx_pcie_ops;
> + hose->indirect_type |= PPC_INDIRECT_TYPE_FSL_CFG_REG_LINK;
>
> out_le32(pcie->cfg_type0 + PEX_OUTWIN0_TAH, 0);
> out_le32(pcie->cfg_type0 + PEX_OUTWIN0_TAL, 0);
>
> - if (fsl_pcie_check_link(hose, NULL))
> + if (fsl_pcie_check_link(hose))
> hose->indirect_type |= PPC_INDIRECT_TYPE_NO_PCIE_LINK;
>
> return 0;
^ permalink raw reply
* Re: [RFC PATCH v2 2/6] powerpc: Exception hooks for context tracking subsystem
From: Li Zhong @ 2013-04-08 9:03 UTC (permalink / raw)
To: Paul Mackerras; +Cc: fweisbec, paulmck, linuxppc-dev, linux-kernel
In-Reply-To: <20130405025025.GB22465@drongo>
On Fri, 2013-04-05 at 13:50 +1100, Paul Mackerras wrote:
> On Fri, Mar 29, 2013 at 06:00:17PM +0800, Li Zhong wrote:
> > This is the exception hooks for context tracking subsystem, including
> > data access, program check, single step, instruction breakpoint, machine check,
> > alignment, fp unavailable, altivec assist, unknown exception, whose handlers
> > might use RCU.
> >
> > This patch corresponds to
> > [PATCH] x86: Exception hooks for userspace RCU extended QS
> > commit 6ba3c97a38803883c2eee489505796cb0a727122
> >
> > Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
Hi Paul,
Thanks for your review! Please check my answers below, and correct me if
any errors.
> Is there a reason why you didn't put the exception_exit() call in
> ret_from_except_lite in entry_64.S, and the exception_entry() call in
> EXCEPTION_PROLOG_COMMON? That would seem to catch all these cases in
> a more centralized place.
It seems to me that ret_from_except_lite and EXCEPTION_PROLOG_COMMON are
also used by interrupts, where I think we don't need the hooks. So using
this way could help to avoid adding overhead to these code path
(interrupts, and some exit path of syscall).
And I think adding the hook on higher level code seems a little easier
for reading and checking. It seems that some exceptions don't use
EXCEPTION_PROLOG_COMMON, and some don't go ret_from_except_lite exit
path (like fp unavailable might go directly to fast_exception_return ).
Maybe fast_exception_return is a centralized place for us to return to
user space? But it still adds some overheads which is not necessarily
needed.
And I think it also makes the implementation here consistent with the
style that x86 uses.
> Also, I notice that with the exception_exit calls where they are, we
> can still deliver signals (thus possibly taking a page fault) or call
> schedule() for preemption after the exception_exit() call. Is that
> OK, or is it a potential problem?
If I understand correctly, I guess you are talking about the cases where
we might return to user space without context state correctly being set
as in user?
There is user_enter() called in do_notify_resume() in patch #3, so after
handling the signals we always call user_enter().
There are also some changes of the context_tracking code from Frederic,
which might be related: ( they are now in tip tree, and url of the
patches for your convenience https://lkml.org/lkml/2013/3/1/266 )
6c1e0256fad84a843d915414e4b5973b7443d48d
context_tracking: Restore correct previous context state on exception
exit.
With this patch, if a later exception happened after user_enter(),
before the CPU actually returns to user space, the correct context
state(in user) is saved and restored when handling the later exception.
Patch #6 converts the code to use these new APIs, which is currently not
available in powerpc tree.
b22366cd54c6fe05db426f20adb10f461c19ec06
context_tracking: Restore preempted context state after
preempt_schedule_irq
With this patch, the user context state could be correctly restored
after schedule returns.
Thanks, Zhong
> Paul.
>
^ permalink raw reply
* [PATCH V5] powerpc/85xx: Add machine check handler to fix PCIe erratum on mpc85xx
From: Jia Hongtao @ 2013-04-08 8:26 UTC (permalink / raw)
To: linuxppc-dev, galak; +Cc: B07421, hongtao.jia
A PCIe erratum of mpc85xx may causes a core hang when a link of PCIe
goes down. when the link goes down, Non-posted transactions issued
via the ATMU requiring completion result in an instruction stall.
At the same time a machine-check exception is generated to the core
to allow further processing by the handler. We implements the handler
which skips the instruction caused the stall.
This patch depends on patch:
powerpc/85xx: Add platform_device declaration to fsl_pci.h
Signed-off-by: Zhao Chenhui <b35336@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
Signed-off-by: Liu Shuo <soniccat.liu@gmail.com>
Signed-off-by: Jia Hongtao <hongtao.jia@freescale.com>
---
Changes for V4:
* Fill rd with all-Fs if the skipped instruction is load and emulate the
instruction.
* Let KVM/QEMU deal with the exception if the machine check comes from KVM.
arch/powerpc/kernel/cpu_setup_fsl_booke.S | 2 +-
arch/powerpc/kernel/traps.c | 3 +
arch/powerpc/sysdev/fsl_pci.c | 121 ++++++++++++++++++++++++++++++
arch/powerpc/sysdev/fsl_pci.h | 6 ++
4 files changed, 131 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/cpu_setup_fsl_booke.S b/arch/powerpc/kernel/cpu_setup_fsl_booke.S
index dcd8819..f1bde90 100644
--- a/arch/powerpc/kernel/cpu_setup_fsl_booke.S
+++ b/arch/powerpc/kernel/cpu_setup_fsl_booke.S
@@ -66,7 +66,7 @@ _GLOBAL(__setup_cpu_e500v2)
bl __e500_icache_setup
bl __e500_dcache_setup
bl __setup_e500_ivors
-#ifdef CONFIG_FSL_RIO
+#if defined(CONFIG_FSL_RIO) || defined(CONFIG_FSL_PCI)
/* Ensure that RFXE is set */
mfspr r3,SPRN_HID1
oris r3,r3,HID1_RFXE@h
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index a008cf5..dd275a4 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -59,6 +59,7 @@
#include <asm/fadump.h>
#include <asm/switch_to.h>
#include <asm/debug.h>
+#include <sysdev/fsl_pci.h>
#if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC)
int (*__debugger)(struct pt_regs *regs) __read_mostly;
@@ -556,6 +557,8 @@ int machine_check_e500(struct pt_regs *regs)
if (reason & MCSR_BUS_RBERR) {
if (fsl_rio_mcheck_exception(regs))
return 1;
+ if (fsl_pci_mcheck_exception(regs))
+ return 1;
}
printk("Machine check in kernel mode.\n");
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 682084d..48326cd 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -26,11 +26,14 @@
#include <linux/memblock.h>
#include <linux/log2.h>
#include <linux/slab.h>
+#include <linux/uaccess.h>
#include <asm/io.h>
#include <asm/prom.h>
#include <asm/pci-bridge.h>
+#include <asm/ppc-pci.h>
#include <asm/machdep.h>
+#include <asm/disassemble.h>
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
@@ -826,6 +829,124 @@ u64 fsl_pci_immrbar_base(struct pci_controller *hose)
return 0;
}
+#ifdef CONFIG_E500
+
+#define OP_LWZ 32
+#define OP_LWZU 33
+#define OP_LBZ 34
+#define OP_LBZU 35
+#define OP_LHZ 40
+#define OP_LHZU 41
+#define OP_LHA 42
+#define OP_LHAU 43
+
+static int mcheck_handle_load(struct pt_regs *regs, u32 inst)
+{
+ unsigned int rd, ra, d;
+
+ rd = get_rt(inst);
+ ra = get_ra(inst);
+ d = get_d(inst);
+
+ switch (get_op(inst)) {
+ case OP_LWZ:
+ regs->gpr[rd] = 0xffffffff;
+ break;
+
+ case OP_LWZU:
+ regs->gpr[rd] = 0xffffffff;
+ regs->gpr[ra] += (s16)d;
+ break;
+
+ case OP_LBZ:
+ regs->gpr[rd] = 0xff;
+ break;
+
+ case OP_LBZU:
+ regs->gpr[rd] = 0xff;
+ regs->gpr[ra] += (s16)d;
+ break;
+
+ case OP_LHZ:
+ regs->gpr[rd] = 0xffff;
+ break;
+
+ case OP_LHZU:
+ regs->gpr[rd] = 0xffff;
+ regs->gpr[ra] += (s16)d;
+ break;
+
+ case OP_LHA:
+ regs->gpr[rd] = 0xffff;
+ break;
+
+ case OP_LHAU:
+ regs->gpr[rd] = 0xffff;
+ regs->gpr[ra] += (s16)d;
+ break;
+
+ default:
+ return 0;
+ }
+
+ return 1;
+}
+
+static int is_in_pci_mem_space(phys_addr_t addr)
+{
+ struct pci_controller *hose;
+ struct resource *res;
+ int i;
+
+ list_for_each_entry(hose, &hose_list, list_node) {
+ if (!early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP))
+ continue;
+
+ for (i = 0; i < 3; i++) {
+ res = &hose->mem_resources[i];
+ if ((res->flags & IORESOURCE_MEM) &&
+ addr >= res->start && addr <= res->end)
+ return 1;
+ }
+ }
+ return 0;
+}
+
+int fsl_pci_mcheck_exception(struct pt_regs *regs)
+{
+ u32 inst;
+ int ret;
+ phys_addr_t addr = 0;
+
+ /* Let KVM/QEMU deal with the exception */
+ if (regs->msr & MSR_GS)
+ return 0;
+
+#ifdef CONFIG_PHYS_64BIT
+ addr = mfspr(SPRN_MCARU);
+ addr <<= 32;
+#endif
+ addr += mfspr(SPRN_MCAR);
+
+ if (is_in_pci_mem_space(addr)) {
+ if (user_mode(regs)) {
+ pagefault_disable();
+ ret = get_user(regs->nip, &inst);
+ pagefault_enable();
+ } else {
+ ret = probe_kernel_address(regs->nip, inst);
+ }
+
+ if (mcheck_handle_load(regs, inst)) {
+ regs->nip += 4;
+ return 1;
+ }
+ }
+
+ return 0;
+}
+#endif
+
#if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx)
static const struct of_device_id pci_ids[] = {
{ .compatible = "fsl,mpc8540-pci", },
diff --git a/arch/powerpc/sysdev/fsl_pci.h b/arch/powerpc/sysdev/fsl_pci.h
index 851dd56..b0d01ea 100644
--- a/arch/powerpc/sysdev/fsl_pci.h
+++ b/arch/powerpc/sysdev/fsl_pci.h
@@ -115,5 +115,11 @@ static inline int mpc85xx_pci_err_probe(struct platform_device *op)
}
#endif
+#ifdef CONFIG_FSL_PCI
+extern int fsl_pci_mcheck_exception(struct pt_regs *);
+#else
+static inline int fsl_pci_mcheck_exception(struct pt_regs *regs) {return 0; }
+#endif
+
#endif /* __POWERPC_FSL_PCI_H */
#endif /* __KERNEL__ */
--
1.8.0
^ permalink raw reply related
* [PATCH] powerpc: remove unused "config 405EP"
From: Paul Bolle @ 2013-04-08 11:27 UTC (permalink / raw)
To: Josh Boyer, Matt Porter, Benjamin Herrenschmidt, Paul Mackerras
Cc: linuxppc-dev, linux-kernel
All users of Kconfig symbol 405EP were removed in release v2.6.27.
Remove this symbol (and a useless select of it) too.
Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
---
0) Tested by grepping the tree only.
1) There's also a Kconfig symbol EP405. Let's hope no one ever made a
typo with either of these two symbols!
arch/powerpc/platforms/40x/Kconfig | 4 ----
1 file changed, 4 deletions(-)
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig
index 7b7a77c..bd40bbb 100644
--- a/arch/powerpc/platforms/40x/Kconfig
+++ b/arch/powerpc/platforms/40x/Kconfig
@@ -20,7 +20,6 @@ config HOTFOOT
bool "Hotfoot"
depends on 40x
default n
- select 405EP
select PPC40x_SIMPLE
select PCI
help
@@ -105,9 +104,6 @@ config 405GP
select IBM405_ERR51
select IBM_EMAC_ZMII
-config 405EP
- bool
-
config 405EX
bool
select IBM_EMAC_EMAC4
--
1.7.11.7
^ permalink raw reply related
* Re: [PATCH] powerpc: remove unused "config 405EP"
From: Josh Boyer @ 2013-04-08 12:13 UTC (permalink / raw)
To: Paul Bolle; +Cc: Paul Mackerras, linuxppc-dev, linux-kernel
In-Reply-To: <1365420434.1830.94.camel@x61.thuisdomein>
On Mon, Apr 8, 2013 at 7:27 AM, Paul Bolle <pebolle@tiscali.nl> wrote:
> All users of Kconfig symbol 405EP were removed in release v2.6.27.
> Remove this symbol (and a useless select of it) too.
>
> Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Acked-by: Josh Boyer <jwboyer@gmail.com>
> ---
> 0) Tested by grepping the tree only.
>
> 1) There's also a Kconfig symbol EP405. Let's hope no one ever made a
> typo with either of these two symbols!
>
> arch/powerpc/platforms/40x/Kconfig | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig
> index 7b7a77c..bd40bbb 100644
> --- a/arch/powerpc/platforms/40x/Kconfig
> +++ b/arch/powerpc/platforms/40x/Kconfig
> @@ -20,7 +20,6 @@ config HOTFOOT
> bool "Hotfoot"
> depends on 40x
> default n
> - select 405EP
> select PPC40x_SIMPLE
> select PCI
> help
> @@ -105,9 +104,6 @@ config 405GP
> select IBM405_ERR51
> select IBM_EMAC_ZMII
>
> -config 405EP
> - bool
> -
> config 405EX
> bool
> select IBM_EMAC_EMAC4
> --
> 1.7.11.7
>
^ permalink raw reply
* [PATCH 2/2] powerpc: Set default VGA device
From: Brian King @ 2013-04-08 13:05 UTC (permalink / raw)
To: linux-pci; +Cc: klebers, brking, lucaskt, bhelgaas, linuxppc-dev
Add a PCI quirk for VGA devices on Power to set the default VGA device.
Ensures a default VGA is always set if a graphics adapter is present,
even if firmware did not initialize it. If more than one graphics
adapter is present, ensure the one initialized by firmware is set
as the default VGA device. This ensures that X autoconfiguration
will work.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
arch/powerpc/kernel/pci-common.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff -puN arch/powerpc/kernel/pci-common.c~powerpc_vga_default_device arch/powerpc/kernel/pci-common.c
--- linux/arch/powerpc/kernel/pci-common.c~powerpc_vga_default_device 2013-04-08 06:16:37.000000000 -0500
+++ linux-bjking1/arch/powerpc/kernel/pci-common.c 2013-04-08 06:16:37.000000000 -0500
@@ -30,6 +30,7 @@
#include <linux/irq.h>
#include <linux/vmalloc.h>
#include <linux/slab.h>
+#include <linux/vgaarb.h>
#include <asm/processor.h>
#include <asm/io.h>
@@ -1725,3 +1726,15 @@ static void fixup_hide_host_resource_fsl
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MOTOROLA, PCI_ANY_ID, fixup_hide_host_resource_fsl);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID, fixup_hide_host_resource_fsl);
+
+static void fixup_vga(struct pci_dev *pdev)
+{
+ u16 cmd;
+
+ pci_read_config_word(pdev, PCI_COMMAND, &cmd);
+ if ((cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) || !vga_default_device())
+ vga_set_default_device(pdev);
+
+}
+DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
+ PCI_CLASS_DISPLAY_VGA, 8, fixup_vga);
_
^ permalink raw reply
* [PATCH 1/2] pci: Set dev->dev.type in alloc_pci_dev
From: Brian King @ 2013-04-08 13:05 UTC (permalink / raw)
To: linux-pci; +Cc: klebers, brking, lucaskt, bhelgaas, linuxppc-dev
Set dev->dev.type in alloc_pci_dev so that archs that have their own
versions of pci_setup_device get this set properly in order to ensure
things like the boot_vga sysfs parameter get created as expected.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
drivers/pci/probe.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff -puN drivers/pci/probe.c~pci_set_dev_type_early drivers/pci/probe.c
--- linux/drivers/pci/probe.c~pci_set_dev_type_early 2013-04-08 06:12:51.000000000 -0500
+++ linux-bjking1/drivers/pci/probe.c 2013-04-08 06:14:33.000000000 -0500
@@ -988,7 +988,6 @@ int pci_setup_device(struct pci_dev *dev
dev->sysdata = dev->bus->sysdata;
dev->dev.parent = dev->bus->bridge;
dev->dev.bus = &pci_bus_type;
- dev->dev.type = &pci_dev_type;
dev->hdr_type = hdr_type & 0x7f;
dev->multifunction = !!(hdr_type & 0x80);
dev->error_state = pci_channel_io_normal;
@@ -1208,6 +1207,7 @@ struct pci_dev *alloc_pci_dev(void)
return NULL;
INIT_LIST_HEAD(&dev->bus_list);
+ dev->dev.type = &pci_dev_type;
return dev;
}
_
^ permalink raw reply
* Re: [PATCH 2/3] powerpc: Enable boot_vga sysfs attribute for graphics adapters on Power
From: Brian King @ 2013-04-08 13:07 UTC (permalink / raw)
To: Michael Ellerman
Cc: linux-pci@vger.kernel.org, klebers, sparclinux,
Lucas Kannebley Tavares, Bjorn Helgaas, linuxppc-dev
In-Reply-To: <20130408052522.GB9550@concordia>
On 04/08/2013 12:25 AM, Michael Ellerman wrote:
> On Fri, Apr 05, 2013 at 02:11:01PM -0600, Bjorn Helgaas wrote:
>> On Thu, Apr 4, 2013 at 3:58 PM, Brian King <brking@linux.vnet.ibm.com> wrote:
>>>
>>> Initialize dev->dev.type such that the PCI group attributes for boot_vga
>>> and SR-IOV can be displayed if appropriate. This fixes an issue seen on
>>> Power preventing X from auto initializing a graphics adapter when using KMS.
>>>
>>> Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
>>> ---
>>>
>>> arch/powerpc/kernel/pci_of_scan.c | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff -puN arch/powerpc/kernel/pci_of_scan.c~powerpc_set_pci_dev_type arch/powerpc/kernel/pci_of_scan.c
>>> --- linux/arch/powerpc/kernel/pci_of_scan.c~powerpc_set_pci_dev_type 2013-04-03 09:43:19.000000000 -0500
>>> +++ linux-bjking1/arch/powerpc/kernel/pci_of_scan.c 2013-04-03 09:43:19.000000000 -0500
>>> @@ -141,6 +141,7 @@ struct pci_dev *of_create_pci_dev(struct
>>> dev->dev.of_node = of_node_get(node);
>>> dev->dev.parent = bus->bridge;
>>> dev->dev.bus = &pci_bus_type;
>>> + dev->dev.type = &pci_dev_type;
>>> dev->devfn = devfn;
>>> dev->multifunction = 0; /* maybe a lie? */
>>> dev->needs_freset = 0; /* pcie fundamental reset required */
>>
>> I think sparc has the same issue in its own copy of of_create_pci_dev().
>>
>> Of course, both of_create_pci_dev() implementations are basically
>> copies of the generic pci_setup_device() that most arches use. That's
>> the reason why I wish sparc and powerpc had used config space
>> accessors that hid the OF mangling internally so they could use the
>> generic pci_setup_device() instead of cloning it.
>>
>> Of course, they don't, and that's too much work for fixing this issue,
>> but if anybody wanted to work on that, I think it would be an
>> interesting project.
>>
>> But what if you set dev->dev.type in alloc_pci_dev()? I think if you
>> did that, you wouldn't need to export "pci_dev_type," and it should
>> fix this for both powerpc and sparc.
>
> That sounds good, Brian can you confirm that works and send a new series
> using that technique.
It does indeed work. I've sent a new series using this technique.
Thanks,
Brian
--
Brian King
Power Linux I/O
IBM Linux Technology Center
^ permalink raw reply
* Re: [PATCH] [RFC] powerpc: Add VDSO version of time
From: Adhemerval Zanella @ 2013-04-08 14:05 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <20130405062137.GA5082@concordia>
On 04/05/2013 03:21 AM, Michael Ellerman wrote:
> On Tue, Mar 19, 2013 at 04:55:31PM -0300, Adhemerval Zanella wrote:
>> Hi all,
>>
>> This patch implement the time syscall as vDSO. I have a glibc patch
>> to use it as IFUNC (as latest gettimeofday patch). Below the perf
>> numbers:
>>
>> Baseline PPC32: 380 nsec
>> Baseline PPC64: 352 nsec
>> vdso PPC32: 20 nsec
>> vdso PPC64: 20 nsec
>>
>> I focused on 64 bit kernel, do I need to provide a scheme for 32 bits
>> as well?
> You did provide a 32-bit implementation. I take it you haven't tested
> that though? Can you test it?
Hi,
I didn't build a 32 bit kernel, but I tested 32 bits binaries (that uses
the VDSO32 implantation) without any issue. Performance gains are similar.
^ permalink raw reply
* Re: [PATCH 1/2] pci: Set dev->dev.type in alloc_pci_dev
From: Bjorn Helgaas @ 2013-04-08 17:20 UTC (permalink / raw)
To: Brian King
Cc: klebers, linux-pci@vger.kernel.org, Lucas Kannebley Tavares,
linuxppc-dev
In-Reply-To: <201304081305.r38D5765032748@d01av04.pok.ibm.com>
On Mon, Apr 8, 2013 at 7:05 AM, Brian King <brking@linux.vnet.ibm.com> wrote:
>
> Set dev->dev.type in alloc_pci_dev so that archs that have their own
> versions of pci_setup_device get this set properly in order to ensure
> things like the boot_vga sysfs parameter get created as expected.
>
> Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Feel free to put this in the powerpc tree along with the "set default
VGA device" patch.
> ---
>
> drivers/pci/probe.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff -puN drivers/pci/probe.c~pci_set_dev_type_early drivers/pci/probe.c
> --- linux/drivers/pci/probe.c~pci_set_dev_type_early 2013-04-08 06:12:51.000000000 -0500
> +++ linux-bjking1/drivers/pci/probe.c 2013-04-08 06:14:33.000000000 -0500
> @@ -988,7 +988,6 @@ int pci_setup_device(struct pci_dev *dev
> dev->sysdata = dev->bus->sysdata;
> dev->dev.parent = dev->bus->bridge;
> dev->dev.bus = &pci_bus_type;
> - dev->dev.type = &pci_dev_type;
> dev->hdr_type = hdr_type & 0x7f;
> dev->multifunction = !!(hdr_type & 0x80);
> dev->error_state = pci_channel_io_normal;
> @@ -1208,6 +1207,7 @@ struct pci_dev *alloc_pci_dev(void)
> return NULL;
>
> INIT_LIST_HEAD(&dev->bus_list);
> + dev->dev.type = &pci_dev_type;
>
> return dev;
> }
> _
>
^ permalink raw reply
* Re: [PATCH] powerpc: add Book E support to 64-bit hibernation
From: Scott Wood @ 2013-04-08 18:24 UTC (permalink / raw)
To: Wang Dongsheng-B40534
Cc: Wood Scott-B07421, Johannes Berg, linuxppc-dev@lists.ozlabs.org
In-Reply-To: <ABB05CD9C9F68C46A5CEDC7F15439259EDDCAE@039-SN2MPN1-021.039d.mgd.msft.net>
On 04/06/2013 10:01:45 PM, Wang Dongsheng-B40534 wrote:
>=20
>=20
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Thursday, April 04, 2013 4:16 AM
> > To: Wang Dongsheng-B40534
> > Cc: Wood Scott-B07421; Johannes Berg; linuxppc-dev@lists.ozlabs.org
> > Subject: Re: [PATCH] powerpc: add Book E support to 64-bit =20
> hibernation
> >
> > On 04/03/2013 12:36:41 AM, Wang Dongsheng-B40534 wrote:
> > >
> > >
> > > > -----Original Message-----
> > > > From: Wood Scott-B07421
> > > > Sent: Wednesday, April 03, 2013 8:35 AM
> > > > To: Wang Dongsheng-B40534
> > > > Cc: Wood Scott-B07421; Johannes Berg; =20
> linuxppc-dev@lists.ozlabs.org
> > > > Subject: Re: [PATCH] powerpc: add Book E support to 64-bit
> > > hibernation
> > > >
> > > > On 04/02/2013 12:28:40 AM, Wang Dongsheng-B40534 wrote:
> > > > > Hi scott & Johannes,
> > > > >
> > > > > Thanks for reviewing.
> > > > >
> > > > > @scott, About this patch, could you please help ack this =20
> patch?
> > > >
> > > > Please investigate the issue of whether we are loading kernel =20
> module
> > > > code in this step, and whether cache flushing is needed as a =20
> result.
> > > >
> > > Sorry, I am not very clear what you mean.
> > > When the kernel boot end, modprobe some xx.ko?
> >
> > Suppose, before the kernel was suspended, modules had been loaded. =20
> At
> > what point do those modules get restored, and when does the cache =20
> get
> > flushed?
> >
> Before the kernel was suspended, modules had been loaded, the modules =20
> is
> already in memory.
They *were* in memory, until the hardware was powered down.
> And /lib/modules/* is belong to vfs.
Huh? I'm talking about modules that have been loaded, not where in the =20
filesystem they were loaded from. Loading a module is not like =20
mmap()ing a file.
> When suspend to disk, all used pages will be saved.(Include VFS, =20
> Loaded modules)
> When restore, the kernel will not modprobe again.
Of course it won't modprobe again. Still, at some point during the =20
resume process, the code has to be loaded from disk into RAM. What I =20
don't know is if this is where that happens.
> The non-bootcpu will restore all pages.(Include VFS, Loaded modules)
I don't know what "non-bootcpu" has to do with anything. What matters =20
is what piece of code does the restoring, and if the cache flush =20
properly happens then.
-Scott=
^ permalink raw reply
* [PATCH] powerpc: remove "config MPC10X_OPENPIC"
From: Paul Bolle @ 2013-04-08 19:35 UTC (permalink / raw)
To: Benjamin Herrenschmidt, Paul Mackerras; +Cc: linuxppc-dev, linux-kernel
The last users of Kconfig symbol MPC10X_OPENPIC were removed in v2.6.27.
Its Kconfig entry can be removed now.
Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
---
Untested.
arch/powerpc/platforms/embedded6xx/Kconfig | 5 -----
1 file changed, 5 deletions(-)
diff --git a/arch/powerpc/platforms/embedded6xx/Kconfig b/arch/powerpc/platforms/embedded6xx/Kconfig
index 5a8f50a9..302ba43 100644
--- a/arch/powerpc/platforms/embedded6xx/Kconfig
+++ b/arch/powerpc/platforms/embedded6xx/Kconfig
@@ -9,7 +9,6 @@ config LINKSTATION
select FSL_SOC
select PPC_UDBG_16550 if SERIAL_8250
select DEFAULT_UIMAGE
- select MPC10X_OPENPIC
select MPC10X_BRIDGE
help
Select LINKSTATION if configuring for one of PPC- (MPC8241)
@@ -24,7 +23,6 @@ config STORCENTER
select MPIC
select FSL_SOC
select PPC_UDBG_16550 if SERIAL_8250
- select MPC10X_OPENPIC
select MPC10X_BRIDGE
help
Select STORCENTER if configuring for the iomega StorCenter
@@ -84,9 +82,6 @@ config MV64X60
select PPC_INDIRECT_PCI
select CHECK_CACHE_COHERENCY
-config MPC10X_OPENPIC
- bool
-
config GAMECUBE_COMMON
bool
--
1.7.11.7
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox