From: "zhichang.yuan" <yuanzhichang@hisilicon.com>
To: Ming Lei <tom.leiming@gmail.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
gabriele.paoloni@huawei.com,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Will Deacon <will.deacon@arm.com>,
linuxarm@huawei.com,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Arnd Bergmann <arnd@arndb.de>,
xuwei5@hisilicon.com, linux-serial@vger.kernel.org,
Catalin Marinas <catalin.marinas@arm.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
minyard@acm.org, Liviu Dudau <liviu.dudau@arm.com>,
john.garry@huawei.com, zourongrong@gmail.com,
Rob Herring <robh+dt@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
kantyzc@163.com, zhichang.yuan02@gmail.com,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Olof Johansson <olof@lixom.net>
Subject: Re: [PATCH V5 1/3] ARM64 LPC: Indirect ISA port IO introduced
Date: Fri, 23 Dec 2016 09:43:55 +0800 [thread overview]
Message-ID: <585C815B.4030000@hisilicon.com> (raw)
In-Reply-To: <CACVXFVNS9n9_ty8y3CyqfRaLitqDKdk1mMOrQHM-enOgJtUBeQ@mail.gmail.com>
SGnvvIxNaW5nLAoKCk9uIDIwMTYvMTIvMjIgMTY6MTUsIE1pbmcgTGVpIHdyb3RlOgo+IEhpIEd1
eXMsCj4gCj4gT24gVHVlLCBOb3YgOCwgMjAxNiBhdCAxMTo0NyBBTSwgemhpY2hhbmcueXVhbgo+
IDx5dWFuemhpY2hhbmdAaGlzaWxpY29uLmNvbT4gd3JvdGU6Cj4+IEZvciBhcm02NCwgdGhlcmUg
aXMgbm8gSS9PIHNwYWNlIGFzIG90aGVyIGFyY2hpdGVjdHVyYWwgcGxhdGZvcm1zLCBzdWNoIGFz
Cj4+IFg4Ni4gTW9zdCBJL08gYWNjZXNzZXMgYXJlIGFjaGlldmVkIGJhc2VkIG9uIE1NSU8uIEJ1
dCBmb3Igc29tZSBhcm02NCBTb0NzLAo+PiBzdWNoIGFzIEhpcDA2LCB3aGVuIGFjY2Vzc2luZyBz
b21lIGxlZ2FjeSBJU0EgZGV2aWNlcyBjb25uZWN0ZWQgdG8gTFBDLCB0aG9zZQo+PiBrbm93biBw
b3J0IGFkZHJlc3NlcyBhcmUgdXNlZCB0byBjb250cm9sIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdl
dCBkZXZpY2VzLCBmb3IKPj4gZXhhbXBsZSwgMHgyZjggaXMgZm9yIFVBUlQsIDB4ZTQgaXMgZm9y
IGlwbWktYnQuIEl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZQo+PiBub3JtYWwgTU1JTyBtb2RlIGlu
IHVzaW5nLgo+Pgo+PiBUbyBkcml2ZSB0aGVzZSBkZXZpY2VzLCB0aGlzIHBhdGNoIGludHJvZHVj
ZXMgYSBtZXRob2QgbmFtZWQgaW5kaXJlY3QtSU8uCj4+IEluIHRoaXMgbWV0aG9kIHRoZSBpbi9v
dXQgcGFpciBpbiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2lvLmggd2lsbCBiZQo+PiByZWRlZmlu
ZWQuIFdoZW4gdXBwZXIgbGF5ZXIgZHJpdmVycyBjYWxsIGluL291dCB3aXRoIHRob3NlIGtub3du
IGxlZ2FjeSBwb3J0Cj4+IGFkZHJlc3NlcyB0byBhY2Nlc3MgdGhlIHBlcmlwaGVyYWxzLCB0aGUg
aG9va2luZyBmdW5jdGlvbnMgY29ycnJlc3BvbmRpbmcgdG8KPj4gdGhvc2UgdGFyZ2V0IHBlcmlw
aGVyYWxzIHdpbGwgYmUgY2FsbGVkLiBUaHJvdWdoIHRoaXMgd2F5LCB0aG9zZSB1cHBlciBsYXll
cgo+PiBkcml2ZXJzIHdoaWNoIGRlcGVuZCBvbiBpbi9vdXQgY2FuIHJ1biBvbiBIaXAwNiB3aXRo
b3V0IGFueSBjaGFuZ2VzLgo+Pgo+PiBDYzogQ2F0YWxpbiBNYXJpbmFzIDxjYXRhbGluLm1hcmlu
YXNAYXJtLmNvbT4KPj4gQ2M6IFdpbGwgRGVhY29uIDx3aWxsLmRlYWNvbkBhcm0uY29tPgo+PiBT
aWduZWQtb2ZmLWJ5OiB6aGljaGFuZy55dWFuIDx5dWFuemhpY2hhbmdAaGlzaWxpY29uLmNvbT4K
Pj4gU2lnbmVkLW9mZi1ieTogR2FicmllbGUgUGFvbG9uaSA8Z2FicmllbGUucGFvbG9uaUBodWF3
ZWkuY29tPgo+PiAtLS0KPj4gIGFyY2gvYXJtNjQvS2NvbmZpZyAgICAgICAgICAgICB8ICA2ICsr
Kwo+PiAgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRpby5oIHwgOTQgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2lv
LmggICAgfCAyOSArKysrKysrKysrKysrCj4+ICBhcmNoL2FybTY0L2tlcm5lbC9NYWtlZmlsZSAg
ICAgfCAgMSArCj4+ICBhcmNoL2FybTY0L2tlcm5lbC9leHRpby5jICAgICAgfCAyNyArKysrKysr
KysrKysKPj4gIDUgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKykKPiAKPiBXaGVuIEkg
YXBwbGllZCB0aGVzZSB0aHJlZSBwYXRjaGVzIGFnYWluc3QgY3VycmVudCBsaW51cyB0cmVlIGFu
ZAo+IGVuYWJsZSBDT05GSUdfSElTSUxJQ09OX0xQQywgdGhlIGZvbGxvd2luZyBidWlsZCBmYWls
dXJlWzFdIGlzCj4gdHJpZ2dlcmVkIHdoZW4gcnVubmluZyAnbWFrZSBtb2R1bGVzJy4KPiAKClRo
YW5rcyBmb3IgeW91ciByZXBvcnQhCgpUaGlzIHBhdGNoIGhhcyBjb21waWxhdGlvbiBpc3N1ZSBv
biBzb21lIGFyY2hpdGVjdHVyZXMsIHNvcnJ5IGZvciB0aGUgaW5jb252ZW5pZW5jZSBjYXVzZWQg
YnkgdGhpcyEKVGhlIG9uZ29pbmcgdjYgd2lsbCBzb2x2ZSB0aGVzZSBpc3N1ZXMuCkkgd2lsbCB0
cmFjZSB0aGlzIGZhaWx1cmUgYW5kIHByb3ZpZGUgYSBmaXggaWYgeW91IGNhbiBub3Qgd2FpdCBm
b3IgdGhlIG5leHQgdmVyc2lvbi4KCkNvdWxkIHlvdSBzZW5kIG1lIHlvdXIgLmNvbmZpZyBpbiBw
cml2YXRlPyBJIGRvbid0IHdhbnQgdG8gYm90aGVyIGFsbCB0aGUgaGFja2VyIGluIHRoZSBtYWls
LWxpc3QuCgoKVGhhbmtzLApaaGljaGFuZwoKPiAKPiBUaGFua3MsCj4gTWluZwo+IAo+IFsxXSAn
bWFrZSBtb2R1bGVzJyBmYWlsdXJlIGxvZwo+IAo+ICAgQnVpbGRpbmcgbW9kdWxlcywgc3RhZ2Ug
Mi4KPiAgIE1PRFBPU1QgMjI2MCBtb2R1bGVzCj4gRVJST1I6ICJpbmIiIFtkcml2ZXJzL3dhdGNo
ZG9nL3dkdF9wY2kua29dIHVuZGVmaW5lZCEKPiBFUlJPUjogIm91dGIiIFtkcml2ZXJzL3dhdGNo
ZG9nL3dkdF9wY2kua29dIHVuZGVmaW5lZCEKPiBFUlJPUjogIm91dGIiIFtkcml2ZXJzL3dhdGNo
ZG9nL3Bjd2RfcGNpLmtvXSB1bmRlZmluZWQhCj4gRVJST1I6ICJpbmIiIFtkcml2ZXJzL3dhdGNo
ZG9nL3Bjd2RfcGNpLmtvXSB1bmRlZmluZWQhCj4gRVJST1I6ICJvdXR3IiBbZHJpdmVycy92aWRl
by92Z2FzdGF0ZS5rb10gdW5kZWZpbmVkIQo+IEVSUk9SOiAib3V0YiIgW2RyaXZlcnMvdmlkZW8v
dmdhc3RhdGUua29dIHVuZGVmaW5lZCEKPiBFUlJPUjogImluYiIgW2RyaXZlcnMvdmlkZW8vdmdh
c3RhdGUua29dIHVuZGVmaW5lZCEKPiBFUlJPUjogIm91dHciIFtkcml2ZXJzL3ZpZGVvL2ZiZGV2
L3Z0ODYyM2ZiLmtvXSB1bmRlZmluZWQhCj4gRVJST1I6ICJpbmIiIFtkcml2ZXJzL3ZpZGVvL2Zi
ZGV2L3Z0ODYyM2ZiLmtvXSB1bmRlZmluZWQhCj4gRVJST1I6ICJvdXRiIiBbZHJpdmVycy92aWRl
by9mYmRldi92dDg2MjNmYi5rb10gdW5kZWZpbmVkIQo+IEVSUk9SOiAib3V0dyIgW2RyaXZlcnMv
dmlkZW8vZmJkZXYvdHJpZGVudGZiLmtvXSB1bmRlZmluZWQhCj4gRVJST1I6ICJpbmIiIFtkcml2
ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5rb10gdW5kZWZpbmVkIQo+IEVSUk9SOiAib3V0YiIg
W2RyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmtvXSB1bmRlZmluZWQhCj4gRVJST1I6ICJp
bmIiIFtkcml2ZXJzL3ZpZGVvL2ZiZGV2L3RkZnhmYi5rb10gdW5kZWZpbmVkIQo+IC4uLi4uCj4g
RVJST1I6ICJpbmIiIFtkcml2ZXJzL2F0YS9wYXRhX2NtZDY0eC5rb10gdW5kZWZpbmVkIQo+IEVS
Uk9SOiAiaW5iIiBbZHJpdmVycy9hdGEvcGF0YV9hcnRvcC5rb10gdW5kZWZpbmVkIQo+IHNjcmlw
dHMvTWFrZWZpbGUubW9kcG9zdDo5MTogcmVjaXBlIGZvciB0YXJnZXQgJ19fbW9kcG9zdCcgZmFp
bGVkCj4gbWFrZVsxXTogKioqIFtfX21vZHBvc3RdIEVycm9yIDEKPiBNYWtlZmlsZToxMTk2OiBy
ZWNpcGUgZm9yIHRhcmdldCAnbW9kdWxlcycgZmFpbGVkCj4gbWFrZTogKioqIFttb2R1bGVzXSBF
cnJvciAyCj4gCj4gCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2Fz
bS9leHRpby5oCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9rZXJuZWwvZXh0aW8u
Ywo+Pgo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9LY29uZmlnIGIvYXJjaC9hcm02NC9LY29u
ZmlnCj4+IGluZGV4IDk2OWVmODguLmI0NDA3MGIgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtNjQv
S2NvbmZpZwo+PiArKysgYi9hcmNoL2FybTY0L0tjb25maWcKPj4gQEAgLTE2Myw2ICsxNjMsMTIg
QEAgY29uZmlnIEFSQ0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUlOCj4+ICBjb25maWcgQVJDSF9N
TUFQX1JORF9DT01QQVRfQklUU19NQVgKPj4gICAgICAgICBkZWZhdWx0IDE2Cj4+Cj4+ICtjb25m
aWcgQVJNNjRfSU5ESVJFQ1RfUElPCj4+ICsgICAgICAgYm9vbCAiYWNjZXNzIHBlcmlwaGVyYWxz
IHdpdGggbGVnYWN5IEkvTyBwb3J0Igo+PiArICAgICAgIGhlbHAKPj4gKyAgICAgICAgIFN1cHBv
cnQgc3BlY2lhbCBhY2Nlc3NvcnMgZm9yIElTQSBJL08gZGV2aWNlcy4gVGhpcyBpcyBuZWVkZWQg
Zm9yCj4+ICsgICAgICAgICBTb0NzIHRoYXQgZG8gbm90IHN1cHBvcnQgc3RhbmRhcmQgcmVhZC93
cml0ZSBmb3IgdGhlIElTQSByYW5nZS4KPj4gKwo+PiAgY29uZmlnIE5PX0lPUE9SVF9NQVAKPj4g
ICAgICAgICBkZWZfYm9vbCB5IGlmICFQQ0kKPj4KPj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv
aW5jbHVkZS9hc20vZXh0aW8uaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZXh0aW8uaAo+PiBu
ZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi42YWUwNzg3Cj4+IC0tLSAvZGV2
L251bGwKPj4gKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9leHRpby5oCj4+IEBAIC0wLDAg
KzEsOTQgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSGlzaWxpY29uIExpbWl0
ZWQsIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCj4+ICsgKiBBdXRob3I6IFpoaWNoYW5nIFl1YW4gPHl1
YW56aGljaGFuZ0BoaXNpbGljb24uY29tPgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4+ICsg
KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl
cnNpb24gMiBhcwo+PiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24uCj4+ICsgKgo+PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiArICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+PiArICog
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4gKyAqCj4+ICsg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQo+PiArICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8
aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4+ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBf
X0xJTlVYX0VYVElPX0gKPj4gKyNkZWZpbmUgX19MSU5VWF9FWFRJT19ICj4+ICsKPj4gK3N0cnVj
dCBleHRpb19vcHMgewo+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQ7LyogaW5jbHVzaXZl
LCBzeXMgaW8gYWRkciAqLwo+PiArICAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOy8qIGluY2x1c2l2
ZSwgc3lzIGlvIGFkZHIgKi8KPj4gKwo+PiArICAgICAgIHU2NCAoKnBmaW4pKHZvaWQgKmRldm9i
aiwgdW5zaWduZWQgbG9uZyBwdGFkZHIsIHNpemVfdCBkbGVuKTsKPj4gKyAgICAgICB2b2lkICgq
cGZvdXQpKHZvaWQgKmRldm9iaiwgdW5zaWduZWQgbG9uZyBwdGFkZHIsIHUzMiBvdXR2YWwsCj4+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGxlbik7Cj4+
ICsgICAgICAgdTY0ICgqcGZpbnMpKHZvaWQgKmRldm9iaiwgdW5zaWduZWQgbG9uZyBwdGFkZHIs
IHZvaWQgKmluYnVmLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
bGVuLCB1bnNpZ25lZCBpbnQgY291bnQpOwo+PiArICAgICAgIHZvaWQgKCpwZm91dHMpKHZvaWQg
KmRldm9iaiwgdW5zaWduZWQgbG9uZyBwdGFkZHIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqb3V0YnVmLCBzaXplX3QgZGxlbiwKPj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQpOwo+PiArICAgICAgIHZvaWQg
KmRldnBhcmE7Cj4+ICt9Owo+PiArCj4+ICtleHRlcm4gc3RydWN0IGV4dGlvX29wcyAqYXJtNjRf
ZXh0aW9fb3BzOwo+PiArCj4+ICsjZGVmaW5lIERFQ0xBUkVfRVhUSU8oYncsIHR5cGUpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiArZXh0ZXJuIHR5
cGUgaW4jI2J3KHVuc2lnbmVkIGxvbmcgYWRkcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKPj4gK2V4dGVybiB2b2lkIG91dCMjYncodHlwZSB2YWx1ZSwgdW5zaWdu
ZWQgbG9uZyBhZGRyKTsgICAgICAgICAgICAgICAgICAgXAo+PiArZXh0ZXJuIHZvaWQgaW5zIyNi
dyh1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgaW50IGNvdW50KTtc
Cj4+ICtleHRlcm4gdm9pZCBvdXRzIyNidyh1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHZvaWQg
KmJ1ZmZlciwgdW5zaWduZWQgaW50IGNvdW50KTsKPj4gKwo+PiArI2RlZmluZSBCVUlMRF9FWFRJ
TyhidywgdHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+
ICt0eXBlIGluIyNidyh1bnNpZ25lZCBsb25nIGFkZHIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiAreyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAg
aWYgKCFhcm02NF9leHRpb19vcHMgfHwgYXJtNjRfZXh0aW9fb3BzLT5zdGFydCA+IGFkZHIgfHwg
ICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYXJtNjRfZXh0aW9fb3BzLT5lbmQg
PCBhZGRyKSAgICAgICAgICAgICAgICAgICAgXAo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJl
YWQjI2J3KFBDSV9JT0JBU0UgKyBhZGRyKTsgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAg
ICAgcmV0dXJuIGFybTY0X2V4dGlvX29wcy0+cGZpbiA/ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgIGFybTY0X2V4dGlvX29wcy0+cGZpbihhcm02
NF9leHRpb19vcHMtPmRldnBhcmEsICAgICAgICAgXAo+PiArICAgICAgICAgICAgICAgICAgICAg
ICBhZGRyLCBzaXplb2YodHlwZSkpIDogLTE7ICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICt9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiArdm9pZCBvdXQjI2J3KHR5cGUg
dmFsdWUsIHVuc2lnbmVkIGxvbmcgYWRkcikgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+
ICt7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICBpZiAoIWFybTY0X2V4dGlvX29wcyB8fCBhcm02
NF9leHRpb19vcHMtPnN0YXJ0ID4gYWRkciB8fCAgICAgICAgXAo+PiArICAgICAgICAgICAgICAg
ICAgICAgICBhcm02NF9leHRpb19vcHMtPmVuZCA8IGFkZHIpICAgICAgICAgICAgICAgICAgICBc
Cj4+ICsgICAgICAgICAgICAgICB3cml0ZSMjYncodmFsdWUsIFBDSV9JT0JBU0UgKyBhZGRyKTsg
ICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiArICAgICAgICAgICAg
ICAgaWYgKGFybTY0X2V4dGlvX29wcy0+cGZvdXQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGFybTY0X2V4dGlvX29wcy0+cGZvdXQoYXJt
NjRfZXh0aW9fb3BzLT5kZXZwYXJhLFwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRyLCB2YWx1ZSwgc2l6ZW9mKHR5cGUpKTsgICAgICAgICAgICAgXAo+PiArfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gK3ZvaWQgaW5zIyNidyh1bnNpZ25lZCBsb25n
IGFkZHIsIHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgaW50IGNvdW50KSAgICAgXAo+PiAreyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4+ICsgICAgICAgaWYgKCFhcm02NF9leHRpb19vcHMgfHwgYXJtNjRfZXh0aW9f
b3BzLT5zdGFydCA+IGFkZHIgfHwgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg
YXJtNjRfZXh0aW9fb3BzLT5lbmQgPCBhZGRyKSAgICAgICAgICAgICAgICAgICAgXAo+PiArICAg
ICAgICAgICAgICAgcmVhZHMjI2J3KFBDSV9JT0JBU0UgKyBhZGRyLCBidWZmZXIsIGNvdW50KTsg
ICAgICAgICAgICBcCj4+ICsgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgIGlmIChh
cm02NF9leHRpb19vcHMtPnBmaW5zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiAr
ICAgICAgICAgICAgICAgICAgICAgICBhcm02NF9leHRpb19vcHMtPnBmaW5zKGFybTY0X2V4dGlv
X29wcy0+ZGV2cGFyYSxcCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwg
YnVmZmVyLCBzaXplb2YodHlwZSksIGNvdW50KTsgICAgIFwKPj4gK30gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCj4+ICt2b2lkIG91dHMjI2J3KHVuc2lnbmVkIGxvbmcgYWRkciwg
Y29uc3Qgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgY291bnQpICAgICAgXAo+PiAreyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCj4+ICsgICAgICAgaWYgKCFhcm02NF9leHRpb19vcHMgfHwgYXJtNjRfZXh0aW9f
b3BzLT5zdGFydCA+IGFkZHIgfHwgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg
YXJtNjRfZXh0aW9fb3BzLT5lbmQgPCBhZGRyKSAgICAgICAgICAgICAgICAgICAgXAo+PiArICAg
ICAgICAgICAgICAgd3JpdGVzIyNidyhQQ0lfSU9CQVNFICsgYWRkciwgYnVmZmVyLCBjb3VudCk7
ICAgICAgICAgICBcCj4+ICsgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICAgICAgICAgIGlmIChh
cm02NF9leHRpb19vcHMtPnBmb3V0cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiAr
ICAgICAgICAgICAgICAgICAgICAgICBhcm02NF9leHRpb19vcHMtPnBmb3V0cyhhcm02NF9leHRp
b19vcHMtPmRldnBhcmEsXAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIs
IGJ1ZmZlciwgc2l6ZW9mKHR5cGUpLCBjb3VudCk7ICAgICBcCj4+ICt9Cj4+ICsKPj4gK3N0YXRp
YyBpbmxpbmUgdm9pZCBhcm02NF9zZXRfZXh0b3BzKHN0cnVjdCBleHRpb19vcHMgKm9wcykKPj4g
K3sKPj4gKyAgICAgICBpZiAob3BzKQo+PiArICAgICAgICAgICAgICAgV1JJVEVfT05DRShhcm02
NF9leHRpb19vcHMsIG9wcyk7Cj4+ICt9Cj4+ICsKPj4gKyNlbmRpZiAvKiBfX0xJTlVYX0VYVElP
X0gqLwo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9pby5oIGIvYXJjaC9h
cm02NC9pbmNsdWRlL2FzbS9pby5oCj4+IGluZGV4IDBiYmE0MjcuLjEzNjczNWQgMTAwNjQ0Cj4+
IC0tLSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vaW8uaAo+PiArKysgYi9hcmNoL2FybTY0L2lu
Y2x1ZGUvYXNtL2lvLmgKPj4gQEAgLTMxLDYgKzMxLDcgQEAKPj4gICNpbmNsdWRlIDxhc20vZWFy
bHlfaW9yZW1hcC5oPgo+PiAgI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5oPgo+PiAgI2luY2x1
ZGUgPGFzbS9jcHVmZWF0dXJlLmg+Cj4+ICsjaW5jbHVkZSA8YXNtL2V4dGlvLmg+Cj4+Cj4+ICAj
aW5jbHVkZSA8eGVuL3hlbi5oPgo+Pgo+PiBAQCAtMTQ5LDYgKzE1MCwzNCBAQCBzdGF0aWMgaW5s
aW5lIHU2NCBfX3Jhd19yZWFkcShjb25zdCB2b2xhdGlsZSB2b2lkIF9faW9tZW0gKmFkZHIpCj4+
ICAjZGVmaW5lIElPX1NQQUNFX0xJTUlUICAgICAgICAgKFBDSV9JT19TSVpFIC0gMSkKPj4gICNk
ZWZpbmUgUENJX0lPQkFTRSAgICAgICAgICAgICAoKHZvaWQgX19pb21lbSAqKVBDSV9JT19TVEFS
VCkKPj4KPj4gKwo+PiArLyoKPj4gKyAqIHJlZGVmaW5lIHRoZSBpbihzKWIvb3V0KHMpYiBmb3Ig
aW5kaXJlY3QtSU8uCj4+ICsgKi8KPj4gKyNpZmRlZiBDT05GSUdfQVJNNjRfSU5ESVJFQ1RfUElP
Cj4+ICsjZGVmaW5lIGluYiBpbmIKPj4gKyNkZWZpbmUgb3V0YiBvdXRiCj4+ICsjZGVmaW5lIGlu
c2IgaW5zYgo+PiArI2RlZmluZSBvdXRzYiBvdXRzYgo+PiArLyogZXh0ZXJuYWwgZGVjbGFyYXRp
b24gKi8KPj4gK0RFQ0xBUkVfRVhUSU8oYiwgdTgpCj4+ICsKPj4gKyNkZWZpbmUgaW53IGludwo+
PiArI2RlZmluZSBvdXR3IG91dHcKPj4gKyNkZWZpbmUgaW5zdyBpbnN3Cj4+ICsjZGVmaW5lIG91
dHN3IG91dHN3Cj4+ICsKPj4gK0RFQ0xBUkVfRVhUSU8odywgdTE2KQo+PiArCj4+ICsjZGVmaW5l
IGlubCBpbmwKPj4gKyNkZWZpbmUgb3V0bCBvdXRsCj4+ICsjZGVmaW5lIGluc2wgaW5zbAo+PiAr
I2RlZmluZSBvdXRzbCBvdXRzbAo+PiArCj4+ICtERUNMQVJFX0VYVElPKGwsIHUzMikKPj4gKyNl
bmRpZgo+PiArCj4+ICsKPj4gIC8qCj4+ICAgKiBTdHJpbmcgdmVyc2lvbiBvZiBJL08gbWVtb3J5
IGFjY2VzcyBvcGVyYXRpb25zLgo+PiAgICovCj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tl
cm5lbC9NYWtlZmlsZSBiL2FyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlCj4+IGluZGV4IDdkNjZi
YmEuLjYwZTA0ODIgMTAwNjQ0Cj4+IC0tLSBhL2FyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlCj4+
ICsrKyBiL2FyY2gvYXJtNjQva2VybmVsL01ha2VmaWxlCj4+IEBAIC0zMSw2ICszMSw3IEBAIGFy
bTY0LW9iai0kKENPTkZJR19DT01QQVQpICAgICAgICAgICAgKz0gc3lzMzIubyBrdXNlcjMyLm8g
c2lnbmFsMzIubyAgICAgICAgIFwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN5c19jb21wYXQubyBlbnRyeTMyLm8KPj4gIGFybTY0LW9iai0kKENPTkZJR19G
VU5DVElPTl9UUkFDRVIpICAgICs9IGZ0cmFjZS5vIGVudHJ5LWZ0cmFjZS5vCj4+ICBhcm02NC1v
YmotJChDT05GSUdfTU9EVUxFUykgICAgICAgICAgICArPSBhcm02NGtzeW1zLm8gbW9kdWxlLm8K
Pj4gK2FybTY0LW9iai0kKENPTkZJR19BUk02NF9JTkRJUkVDVF9QSU8pICs9IGV4dGlvLm8KPj4g
IGFybTY0LW9iai0kKENPTkZJR19BUk02NF9NT0RVTEVfUExUUykgICs9IG1vZHVsZS1wbHRzLm8K
Pj4gIGFybTY0LW9iai0kKENPTkZJR19QRVJGX0VWRU5UUykgICAgICAgICAgICAgICAgKz0gcGVy
Zl9yZWdzLm8gcGVyZl9jYWxsY2hhaW4ubwo+PiAgYXJtNjQtb2JqLSQoQ09ORklHX0hXX1BFUkZf
RVZFTlRTKSAgICAgKz0gcGVyZl9ldmVudC5vCj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tl
cm5lbC9leHRpby5jIGIvYXJjaC9hcm02NC9rZXJuZWwvZXh0aW8uYwo+PiBuZXcgZmlsZSBtb2Rl
IDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi42NDdiM2ZhCj4+IC0tLSAvZGV2L251bGwKPj4gKysr
IGIvYXJjaC9hcm02NC9rZXJuZWwvZXh0aW8uYwo+PiBAQCAtMCwwICsxLDI3IEBACj4+ICsvKgo+
PiArICogQ29weXJpZ2h0IChDKSAyMDE2IEhpc2lsaWNvbiBMaW1pdGVkLCBBbGwgUmlnaHRzIFJl
c2VydmVkLgo+PiArICogQXV0aG9yOiBaaGljaGFuZyBZdWFuIDx5dWFuemhpY2hhbmdAaGlzaWxp
Y29uLmNvbT4KPj4gKyAqCj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+PiArICogaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPj4gKyAq
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+PiArICoKPj4gKyAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAo+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKPj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPj4gKyAqIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+ICsgKgo+PiArICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKPj4gKyAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y
Zy9saWNlbnNlcy8+Lgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+PiAr
Cj4+ICtzdHJ1Y3QgZXh0aW9fb3BzICphcm02NF9leHRpb19vcHM7Cj4+ICsKPj4gKwo+PiArQlVJ
TERfRVhUSU8oYiwgdTgpCj4+ICsKPj4gK0JVSUxEX0VYVElPKHcsIHUxNikKPj4gKwo+PiArQlVJ
TERfRVhUSU8obCwgdTMyKQo+PiAtLQo+PiAxLjkuMQo+Pgo+IAo+IAo+IAoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp
bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz
dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK
WARNING: multiple messages have this Message-ID (diff)
From: "zhichang.yuan" <yuanzhichang@hisilicon.com>
To: Ming Lei <tom.leiming@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Rob Herring <robh+dt@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Mark Rutland <mark.rutland@arm.com>,
Olof Johansson <olof@lixom.net>, Arnd Bergmann <arnd@arndb.de>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linuxarm@huawei.com,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
linux-serial@vger.kernel.org, minyard@acm.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Liviu Dudau <liviu.dudau@arm.com>,
zourongrong@gmail.com, john.garry@huawei.com,
gabriele.paoloni@huawei.com
Subject: Re: [PATCH V5 1/3] ARM64 LPC: Indirect ISA port IO introduced
Date: Fri, 23 Dec 2016 09:43:55 +0800 [thread overview]
Message-ID: <585C815B.4030000@hisilicon.com> (raw)
In-Reply-To: <CACVXFVNS9n9_ty8y3CyqfRaLitqDKdk1mMOrQHM-enOgJtUBeQ@mail.gmail.com>
Hi,Ming,
On 2016/12/22 16:15, Ming Lei wrote:
> Hi Guys,
>
> On Tue, Nov 8, 2016 at 11:47 AM, zhichang.yuan
> <yuanzhichang@hisilicon.com> wrote:
>> For arm64, there is no I/O space as other architectural platforms, such as
>> X86. Most I/O accesses are achieved based on MMIO. But for some arm64 SoCs,
>> such as Hip06, when accessing some legacy ISA devices connected to LPC, those
>> known port addresses are used to control the corresponding target devices, for
>> example, 0x2f8 is for UART, 0xe4 is for ipmi-bt. It is different from the
>> normal MMIO mode in using.
>>
>> To drive these devices, this patch introduces a method named indirect-IO.
>> In this method the in/out pair in arch/arm64/include/asm/io.h will be
>> redefined. When upper layer drivers call in/out with those known legacy port
>> addresses to access the peripherals, the hooking functions corrresponding to
>> those target peripherals will be called. Through this way, those upper layer
>> drivers which depend on in/out can run on Hip06 without any changes.
>>
>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Signed-off-by: zhichang.yuan <yuanzhichang@hisilicon.com>
>> Signed-off-by: Gabriele Paoloni <gabriele.paoloni@huawei.com>
>> ---
>> arch/arm64/Kconfig | 6 +++
>> arch/arm64/include/asm/extio.h | 94 ++++++++++++++++++++++++++++++++++++++++++
>> arch/arm64/include/asm/io.h | 29 +++++++++++++
>> arch/arm64/kernel/Makefile | 1 +
>> arch/arm64/kernel/extio.c | 27 ++++++++++++
>> 5 files changed, 157 insertions(+)
>
> When I applied these three patches against current linus tree and
> enable CONFIG_HISILICON_LPC, the following build failure[1] is
> triggered when running 'make modules'.
>
Thanks for your report!
This patch has compilation issue on some architectures, sorry for the inconvenience caused by this!
The ongoing v6 will solve these issues.
I will trace this failure and provide a fix if you can not wait for the next version.
Could you send me your .config in private? I don't want to bother all the hacker in the mail-list.
Thanks,
Zhichang
>
> Thanks,
> Ming
>
> [1] 'make modules' failure log
>
> Building modules, stage 2.
> MODPOST 2260 modules
> ERROR: "inb" [drivers/watchdog/wdt_pci.ko] undefined!
> ERROR: "outb" [drivers/watchdog/wdt_pci.ko] undefined!
> ERROR: "outb" [drivers/watchdog/pcwd_pci.ko] undefined!
> ERROR: "inb" [drivers/watchdog/pcwd_pci.ko] undefined!
> ERROR: "outw" [drivers/video/vgastate.ko] undefined!
> ERROR: "outb" [drivers/video/vgastate.ko] undefined!
> ERROR: "inb" [drivers/video/vgastate.ko] undefined!
> ERROR: "outw" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "outb" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "outw" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "outb" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/tdfxfb.ko] undefined!
> .....
> ERROR: "inb" [drivers/ata/pata_cmd64x.ko] undefined!
> ERROR: "inb" [drivers/ata/pata_artop.ko] undefined!
> scripts/Makefile.modpost:91: recipe for target '__modpost' failed
> make[1]: *** [__modpost] Error 1
> Makefile:1196: recipe for target 'modules' failed
> make: *** [modules] Error 2
>
>
>> create mode 100644 arch/arm64/include/asm/extio.h
>> create mode 100644 arch/arm64/kernel/extio.c
>>
>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>> index 969ef88..b44070b 100644
>> --- a/arch/arm64/Kconfig
>> +++ b/arch/arm64/Kconfig
>> @@ -163,6 +163,12 @@ config ARCH_MMAP_RND_COMPAT_BITS_MIN
>> config ARCH_MMAP_RND_COMPAT_BITS_MAX
>> default 16
>>
>> +config ARM64_INDIRECT_PIO
>> + bool "access peripherals with legacy I/O port"
>> + help
>> + Support special accessors for ISA I/O devices. This is needed for
>> + SoCs that do not support standard read/write for the ISA range.
>> +
>> config NO_IOPORT_MAP
>> def_bool y if !PCI
>>
>> diff --git a/arch/arm64/include/asm/extio.h b/arch/arm64/include/asm/extio.h
>> new file mode 100644
>> index 0000000..6ae0787
>> --- /dev/null
>> +++ b/arch/arm64/include/asm/extio.h
>> @@ -0,0 +1,94 @@
>> +/*
>> + * Copyright (C) 2016 Hisilicon Limited, All Rights Reserved.
>> + * Author: Zhichang Yuan <yuanzhichang@hisilicon.com>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> + */
>> +
>> +#ifndef __LINUX_EXTIO_H
>> +#define __LINUX_EXTIO_H
>> +
>> +struct extio_ops {
>> + unsigned long start;/* inclusive, sys io addr */
>> + unsigned long end;/* inclusive, sys io addr */
>> +
>> + u64 (*pfin)(void *devobj, unsigned long ptaddr, size_t dlen);
>> + void (*pfout)(void *devobj, unsigned long ptaddr, u32 outval,
>> + size_t dlen);
>> + u64 (*pfins)(void *devobj, unsigned long ptaddr, void *inbuf,
>> + size_t dlen, unsigned int count);
>> + void (*pfouts)(void *devobj, unsigned long ptaddr,
>> + const void *outbuf, size_t dlen,
>> + unsigned int count);
>> + void *devpara;
>> +};
>> +
>> +extern struct extio_ops *arm64_extio_ops;
>> +
>> +#define DECLARE_EXTIO(bw, type) \
>> +extern type in##bw(unsigned long addr); \
>> +extern void out##bw(type value, unsigned long addr); \
>> +extern void ins##bw(unsigned long addr, void *buffer, unsigned int count);\
>> +extern void outs##bw(unsigned long addr, const void *buffer, unsigned int count);
>> +
>> +#define BUILD_EXTIO(bw, type) \
>> +type in##bw(unsigned long addr) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + return read##bw(PCI_IOBASE + addr); \
>> + return arm64_extio_ops->pfin ? \
>> + arm64_extio_ops->pfin(arm64_extio_ops->devpara, \
>> + addr, sizeof(type)) : -1; \
>> +} \
>> + \
>> +void out##bw(type value, unsigned long addr) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + write##bw(value, PCI_IOBASE + addr); \
>> + else \
>> + if (arm64_extio_ops->pfout) \
>> + arm64_extio_ops->pfout(arm64_extio_ops->devpara,\
>> + addr, value, sizeof(type)); \
>> +} \
>> + \
>> +void ins##bw(unsigned long addr, void *buffer, unsigned int count) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + reads##bw(PCI_IOBASE + addr, buffer, count); \
>> + else \
>> + if (arm64_extio_ops->pfins) \
>> + arm64_extio_ops->pfins(arm64_extio_ops->devpara,\
>> + addr, buffer, sizeof(type), count); \
>> +} \
>> + \
>> +void outs##bw(unsigned long addr, const void *buffer, unsigned int count) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + writes##bw(PCI_IOBASE + addr, buffer, count); \
>> + else \
>> + if (arm64_extio_ops->pfouts) \
>> + arm64_extio_ops->pfouts(arm64_extio_ops->devpara,\
>> + addr, buffer, sizeof(type), count); \
>> +}
>> +
>> +static inline void arm64_set_extops(struct extio_ops *ops)
>> +{
>> + if (ops)
>> + WRITE_ONCE(arm64_extio_ops, ops);
>> +}
>> +
>> +#endif /* __LINUX_EXTIO_H*/
>> diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
>> index 0bba427..136735d 100644
>> --- a/arch/arm64/include/asm/io.h
>> +++ b/arch/arm64/include/asm/io.h
>> @@ -31,6 +31,7 @@
>> #include <asm/early_ioremap.h>
>> #include <asm/alternative.h>
>> #include <asm/cpufeature.h>
>> +#include <asm/extio.h>
>>
>> #include <xen/xen.h>
>>
>> @@ -149,6 +150,34 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
>> #define IO_SPACE_LIMIT (PCI_IO_SIZE - 1)
>> #define PCI_IOBASE ((void __iomem *)PCI_IO_START)
>>
>> +
>> +/*
>> + * redefine the in(s)b/out(s)b for indirect-IO.
>> + */
>> +#ifdef CONFIG_ARM64_INDIRECT_PIO
>> +#define inb inb
>> +#define outb outb
>> +#define insb insb
>> +#define outsb outsb
>> +/* external declaration */
>> +DECLARE_EXTIO(b, u8)
>> +
>> +#define inw inw
>> +#define outw outw
>> +#define insw insw
>> +#define outsw outsw
>> +
>> +DECLARE_EXTIO(w, u16)
>> +
>> +#define inl inl
>> +#define outl outl
>> +#define insl insl
>> +#define outsl outsl
>> +
>> +DECLARE_EXTIO(l, u32)
>> +#endif
>> +
>> +
>> /*
>> * String version of I/O memory access operations.
>> */
>> diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
>> index 7d66bba..60e0482 100644
>> --- a/arch/arm64/kernel/Makefile
>> +++ b/arch/arm64/kernel/Makefile
>> @@ -31,6 +31,7 @@ arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \
>> sys_compat.o entry32.o
>> arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o
>> arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o
>> +arm64-obj-$(CONFIG_ARM64_INDIRECT_PIO) += extio.o
>> arm64-obj-$(CONFIG_ARM64_MODULE_PLTS) += module-plts.o
>> arm64-obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o
>> arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o
>> diff --git a/arch/arm64/kernel/extio.c b/arch/arm64/kernel/extio.c
>> new file mode 100644
>> index 0000000..647b3fa
>> --- /dev/null
>> +++ b/arch/arm64/kernel/extio.c
>> @@ -0,0 +1,27 @@
>> +/*
>> + * Copyright (C) 2016 Hisilicon Limited, All Rights Reserved.
>> + * Author: Zhichang Yuan <yuanzhichang@hisilicon.com>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> + */
>> +
>> +#include <linux/io.h>
>> +
>> +struct extio_ops *arm64_extio_ops;
>> +
>> +
>> +BUILD_EXTIO(b, u8)
>> +
>> +BUILD_EXTIO(w, u16)
>> +
>> +BUILD_EXTIO(l, u32)
>> --
>> 1.9.1
>>
>
>
>
WARNING: multiple messages have this Message-ID (diff)
From: yuanzhichang@hisilicon.com (zhichang.yuan)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V5 1/3] ARM64 LPC: Indirect ISA port IO introduced
Date: Fri, 23 Dec 2016 09:43:55 +0800 [thread overview]
Message-ID: <585C815B.4030000@hisilicon.com> (raw)
In-Reply-To: <CACVXFVNS9n9_ty8y3CyqfRaLitqDKdk1mMOrQHM-enOgJtUBeQ@mail.gmail.com>
Hi?Ming,
On 2016/12/22 16:15, Ming Lei wrote:
> Hi Guys,
>
> On Tue, Nov 8, 2016 at 11:47 AM, zhichang.yuan
> <yuanzhichang@hisilicon.com> wrote:
>> For arm64, there is no I/O space as other architectural platforms, such as
>> X86. Most I/O accesses are achieved based on MMIO. But for some arm64 SoCs,
>> such as Hip06, when accessing some legacy ISA devices connected to LPC, those
>> known port addresses are used to control the corresponding target devices, for
>> example, 0x2f8 is for UART, 0xe4 is for ipmi-bt. It is different from the
>> normal MMIO mode in using.
>>
>> To drive these devices, this patch introduces a method named indirect-IO.
>> In this method the in/out pair in arch/arm64/include/asm/io.h will be
>> redefined. When upper layer drivers call in/out with those known legacy port
>> addresses to access the peripherals, the hooking functions corrresponding to
>> those target peripherals will be called. Through this way, those upper layer
>> drivers which depend on in/out can run on Hip06 without any changes.
>>
>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Signed-off-by: zhichang.yuan <yuanzhichang@hisilicon.com>
>> Signed-off-by: Gabriele Paoloni <gabriele.paoloni@huawei.com>
>> ---
>> arch/arm64/Kconfig | 6 +++
>> arch/arm64/include/asm/extio.h | 94 ++++++++++++++++++++++++++++++++++++++++++
>> arch/arm64/include/asm/io.h | 29 +++++++++++++
>> arch/arm64/kernel/Makefile | 1 +
>> arch/arm64/kernel/extio.c | 27 ++++++++++++
>> 5 files changed, 157 insertions(+)
>
> When I applied these three patches against current linus tree and
> enable CONFIG_HISILICON_LPC, the following build failure[1] is
> triggered when running 'make modules'.
>
Thanks for your report!
This patch has compilation issue on some architectures, sorry for the inconvenience caused by this!
The ongoing v6 will solve these issues.
I will trace this failure and provide a fix if you can not wait for the next version.
Could you send me your .config in private? I don't want to bother all the hacker in the mail-list.
Thanks,
Zhichang
>
> Thanks,
> Ming
>
> [1] 'make modules' failure log
>
> Building modules, stage 2.
> MODPOST 2260 modules
> ERROR: "inb" [drivers/watchdog/wdt_pci.ko] undefined!
> ERROR: "outb" [drivers/watchdog/wdt_pci.ko] undefined!
> ERROR: "outb" [drivers/watchdog/pcwd_pci.ko] undefined!
> ERROR: "inb" [drivers/watchdog/pcwd_pci.ko] undefined!
> ERROR: "outw" [drivers/video/vgastate.ko] undefined!
> ERROR: "outb" [drivers/video/vgastate.ko] undefined!
> ERROR: "inb" [drivers/video/vgastate.ko] undefined!
> ERROR: "outw" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "outb" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "outw" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "outb" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/tdfxfb.ko] undefined!
> .....
> ERROR: "inb" [drivers/ata/pata_cmd64x.ko] undefined!
> ERROR: "inb" [drivers/ata/pata_artop.ko] undefined!
> scripts/Makefile.modpost:91: recipe for target '__modpost' failed
> make[1]: *** [__modpost] Error 1
> Makefile:1196: recipe for target 'modules' failed
> make: *** [modules] Error 2
>
>
>> create mode 100644 arch/arm64/include/asm/extio.h
>> create mode 100644 arch/arm64/kernel/extio.c
>>
>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>> index 969ef88..b44070b 100644
>> --- a/arch/arm64/Kconfig
>> +++ b/arch/arm64/Kconfig
>> @@ -163,6 +163,12 @@ config ARCH_MMAP_RND_COMPAT_BITS_MIN
>> config ARCH_MMAP_RND_COMPAT_BITS_MAX
>> default 16
>>
>> +config ARM64_INDIRECT_PIO
>> + bool "access peripherals with legacy I/O port"
>> + help
>> + Support special accessors for ISA I/O devices. This is needed for
>> + SoCs that do not support standard read/write for the ISA range.
>> +
>> config NO_IOPORT_MAP
>> def_bool y if !PCI
>>
>> diff --git a/arch/arm64/include/asm/extio.h b/arch/arm64/include/asm/extio.h
>> new file mode 100644
>> index 0000000..6ae0787
>> --- /dev/null
>> +++ b/arch/arm64/include/asm/extio.h
>> @@ -0,0 +1,94 @@
>> +/*
>> + * Copyright (C) 2016 Hisilicon Limited, All Rights Reserved.
>> + * Author: Zhichang Yuan <yuanzhichang@hisilicon.com>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> + */
>> +
>> +#ifndef __LINUX_EXTIO_H
>> +#define __LINUX_EXTIO_H
>> +
>> +struct extio_ops {
>> + unsigned long start;/* inclusive, sys io addr */
>> + unsigned long end;/* inclusive, sys io addr */
>> +
>> + u64 (*pfin)(void *devobj, unsigned long ptaddr, size_t dlen);
>> + void (*pfout)(void *devobj, unsigned long ptaddr, u32 outval,
>> + size_t dlen);
>> + u64 (*pfins)(void *devobj, unsigned long ptaddr, void *inbuf,
>> + size_t dlen, unsigned int count);
>> + void (*pfouts)(void *devobj, unsigned long ptaddr,
>> + const void *outbuf, size_t dlen,
>> + unsigned int count);
>> + void *devpara;
>> +};
>> +
>> +extern struct extio_ops *arm64_extio_ops;
>> +
>> +#define DECLARE_EXTIO(bw, type) \
>> +extern type in##bw(unsigned long addr); \
>> +extern void out##bw(type value, unsigned long addr); \
>> +extern void ins##bw(unsigned long addr, void *buffer, unsigned int count);\
>> +extern void outs##bw(unsigned long addr, const void *buffer, unsigned int count);
>> +
>> +#define BUILD_EXTIO(bw, type) \
>> +type in##bw(unsigned long addr) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + return read##bw(PCI_IOBASE + addr); \
>> + return arm64_extio_ops->pfin ? \
>> + arm64_extio_ops->pfin(arm64_extio_ops->devpara, \
>> + addr, sizeof(type)) : -1; \
>> +} \
>> + \
>> +void out##bw(type value, unsigned long addr) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + write##bw(value, PCI_IOBASE + addr); \
>> + else \
>> + if (arm64_extio_ops->pfout) \
>> + arm64_extio_ops->pfout(arm64_extio_ops->devpara,\
>> + addr, value, sizeof(type)); \
>> +} \
>> + \
>> +void ins##bw(unsigned long addr, void *buffer, unsigned int count) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + reads##bw(PCI_IOBASE + addr, buffer, count); \
>> + else \
>> + if (arm64_extio_ops->pfins) \
>> + arm64_extio_ops->pfins(arm64_extio_ops->devpara,\
>> + addr, buffer, sizeof(type), count); \
>> +} \
>> + \
>> +void outs##bw(unsigned long addr, const void *buffer, unsigned int count) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + writes##bw(PCI_IOBASE + addr, buffer, count); \
>> + else \
>> + if (arm64_extio_ops->pfouts) \
>> + arm64_extio_ops->pfouts(arm64_extio_ops->devpara,\
>> + addr, buffer, sizeof(type), count); \
>> +}
>> +
>> +static inline void arm64_set_extops(struct extio_ops *ops)
>> +{
>> + if (ops)
>> + WRITE_ONCE(arm64_extio_ops, ops);
>> +}
>> +
>> +#endif /* __LINUX_EXTIO_H*/
>> diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
>> index 0bba427..136735d 100644
>> --- a/arch/arm64/include/asm/io.h
>> +++ b/arch/arm64/include/asm/io.h
>> @@ -31,6 +31,7 @@
>> #include <asm/early_ioremap.h>
>> #include <asm/alternative.h>
>> #include <asm/cpufeature.h>
>> +#include <asm/extio.h>
>>
>> #include <xen/xen.h>
>>
>> @@ -149,6 +150,34 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
>> #define IO_SPACE_LIMIT (PCI_IO_SIZE - 1)
>> #define PCI_IOBASE ((void __iomem *)PCI_IO_START)
>>
>> +
>> +/*
>> + * redefine the in(s)b/out(s)b for indirect-IO.
>> + */
>> +#ifdef CONFIG_ARM64_INDIRECT_PIO
>> +#define inb inb
>> +#define outb outb
>> +#define insb insb
>> +#define outsb outsb
>> +/* external declaration */
>> +DECLARE_EXTIO(b, u8)
>> +
>> +#define inw inw
>> +#define outw outw
>> +#define insw insw
>> +#define outsw outsw
>> +
>> +DECLARE_EXTIO(w, u16)
>> +
>> +#define inl inl
>> +#define outl outl
>> +#define insl insl
>> +#define outsl outsl
>> +
>> +DECLARE_EXTIO(l, u32)
>> +#endif
>> +
>> +
>> /*
>> * String version of I/O memory access operations.
>> */
>> diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
>> index 7d66bba..60e0482 100644
>> --- a/arch/arm64/kernel/Makefile
>> +++ b/arch/arm64/kernel/Makefile
>> @@ -31,6 +31,7 @@ arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \
>> sys_compat.o entry32.o
>> arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o
>> arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o
>> +arm64-obj-$(CONFIG_ARM64_INDIRECT_PIO) += extio.o
>> arm64-obj-$(CONFIG_ARM64_MODULE_PLTS) += module-plts.o
>> arm64-obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o
>> arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o
>> diff --git a/arch/arm64/kernel/extio.c b/arch/arm64/kernel/extio.c
>> new file mode 100644
>> index 0000000..647b3fa
>> --- /dev/null
>> +++ b/arch/arm64/kernel/extio.c
>> @@ -0,0 +1,27 @@
>> +/*
>> + * Copyright (C) 2016 Hisilicon Limited, All Rights Reserved.
>> + * Author: Zhichang Yuan <yuanzhichang@hisilicon.com>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> + */
>> +
>> +#include <linux/io.h>
>> +
>> +struct extio_ops *arm64_extio_ops;
>> +
>> +
>> +BUILD_EXTIO(b, u8)
>> +
>> +BUILD_EXTIO(w, u16)
>> +
>> +BUILD_EXTIO(l, u32)
>> --
>> 1.9.1
>>
>
>
>
WARNING: multiple messages have this Message-ID (diff)
From: "zhichang.yuan" <yuanzhichang@hisilicon.com>
To: Ming Lei <tom.leiming@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Rob Herring <robh+dt@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Mark Rutland <mark.rutland@arm.com>,
Olof Johansson <olof@lixom.net>, Arnd Bergmann <arnd@arndb.de>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
<linuxarm@huawei.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
<linux-serial@vger.kernel.org>, <minyard@acm.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Liviu Dudau <liviu.dudau@arm.com>, <zourongrong@gmail.com>,
<john.garry@huawei.com>, <gabriele.paoloni@huawei.com>,
<zhichang.yuan02@gmail.com>, <kantyzc@163.com>,
<xuwei5@hisilicon.com>
Subject: Re: [PATCH V5 1/3] ARM64 LPC: Indirect ISA port IO introduced
Date: Fri, 23 Dec 2016 09:43:55 +0800 [thread overview]
Message-ID: <585C815B.4030000@hisilicon.com> (raw)
In-Reply-To: <CACVXFVNS9n9_ty8y3CyqfRaLitqDKdk1mMOrQHM-enOgJtUBeQ@mail.gmail.com>
Hi,Ming,
On 2016/12/22 16:15, Ming Lei wrote:
> Hi Guys,
>
> On Tue, Nov 8, 2016 at 11:47 AM, zhichang.yuan
> <yuanzhichang@hisilicon.com> wrote:
>> For arm64, there is no I/O space as other architectural platforms, such as
>> X86. Most I/O accesses are achieved based on MMIO. But for some arm64 SoCs,
>> such as Hip06, when accessing some legacy ISA devices connected to LPC, those
>> known port addresses are used to control the corresponding target devices, for
>> example, 0x2f8 is for UART, 0xe4 is for ipmi-bt. It is different from the
>> normal MMIO mode in using.
>>
>> To drive these devices, this patch introduces a method named indirect-IO.
>> In this method the in/out pair in arch/arm64/include/asm/io.h will be
>> redefined. When upper layer drivers call in/out with those known legacy port
>> addresses to access the peripherals, the hooking functions corrresponding to
>> those target peripherals will be called. Through this way, those upper layer
>> drivers which depend on in/out can run on Hip06 without any changes.
>>
>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Signed-off-by: zhichang.yuan <yuanzhichang@hisilicon.com>
>> Signed-off-by: Gabriele Paoloni <gabriele.paoloni@huawei.com>
>> ---
>> arch/arm64/Kconfig | 6 +++
>> arch/arm64/include/asm/extio.h | 94 ++++++++++++++++++++++++++++++++++++++++++
>> arch/arm64/include/asm/io.h | 29 +++++++++++++
>> arch/arm64/kernel/Makefile | 1 +
>> arch/arm64/kernel/extio.c | 27 ++++++++++++
>> 5 files changed, 157 insertions(+)
>
> When I applied these three patches against current linus tree and
> enable CONFIG_HISILICON_LPC, the following build failure[1] is
> triggered when running 'make modules'.
>
Thanks for your report!
This patch has compilation issue on some architectures, sorry for the inconvenience caused by this!
The ongoing v6 will solve these issues.
I will trace this failure and provide a fix if you can not wait for the next version.
Could you send me your .config in private? I don't want to bother all the hacker in the mail-list.
Thanks,
Zhichang
>
> Thanks,
> Ming
>
> [1] 'make modules' failure log
>
> Building modules, stage 2.
> MODPOST 2260 modules
> ERROR: "inb" [drivers/watchdog/wdt_pci.ko] undefined!
> ERROR: "outb" [drivers/watchdog/wdt_pci.ko] undefined!
> ERROR: "outb" [drivers/watchdog/pcwd_pci.ko] undefined!
> ERROR: "inb" [drivers/watchdog/pcwd_pci.ko] undefined!
> ERROR: "outw" [drivers/video/vgastate.ko] undefined!
> ERROR: "outb" [drivers/video/vgastate.ko] undefined!
> ERROR: "inb" [drivers/video/vgastate.ko] undefined!
> ERROR: "outw" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "outb" [drivers/video/fbdev/vt8623fb.ko] undefined!
> ERROR: "outw" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "outb" [drivers/video/fbdev/tridentfb.ko] undefined!
> ERROR: "inb" [drivers/video/fbdev/tdfxfb.ko] undefined!
> .....
> ERROR: "inb" [drivers/ata/pata_cmd64x.ko] undefined!
> ERROR: "inb" [drivers/ata/pata_artop.ko] undefined!
> scripts/Makefile.modpost:91: recipe for target '__modpost' failed
> make[1]: *** [__modpost] Error 1
> Makefile:1196: recipe for target 'modules' failed
> make: *** [modules] Error 2
>
>
>> create mode 100644 arch/arm64/include/asm/extio.h
>> create mode 100644 arch/arm64/kernel/extio.c
>>
>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>> index 969ef88..b44070b 100644
>> --- a/arch/arm64/Kconfig
>> +++ b/arch/arm64/Kconfig
>> @@ -163,6 +163,12 @@ config ARCH_MMAP_RND_COMPAT_BITS_MIN
>> config ARCH_MMAP_RND_COMPAT_BITS_MAX
>> default 16
>>
>> +config ARM64_INDIRECT_PIO
>> + bool "access peripherals with legacy I/O port"
>> + help
>> + Support special accessors for ISA I/O devices. This is needed for
>> + SoCs that do not support standard read/write for the ISA range.
>> +
>> config NO_IOPORT_MAP
>> def_bool y if !PCI
>>
>> diff --git a/arch/arm64/include/asm/extio.h b/arch/arm64/include/asm/extio.h
>> new file mode 100644
>> index 0000000..6ae0787
>> --- /dev/null
>> +++ b/arch/arm64/include/asm/extio.h
>> @@ -0,0 +1,94 @@
>> +/*
>> + * Copyright (C) 2016 Hisilicon Limited, All Rights Reserved.
>> + * Author: Zhichang Yuan <yuanzhichang@hisilicon.com>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> + */
>> +
>> +#ifndef __LINUX_EXTIO_H
>> +#define __LINUX_EXTIO_H
>> +
>> +struct extio_ops {
>> + unsigned long start;/* inclusive, sys io addr */
>> + unsigned long end;/* inclusive, sys io addr */
>> +
>> + u64 (*pfin)(void *devobj, unsigned long ptaddr, size_t dlen);
>> + void (*pfout)(void *devobj, unsigned long ptaddr, u32 outval,
>> + size_t dlen);
>> + u64 (*pfins)(void *devobj, unsigned long ptaddr, void *inbuf,
>> + size_t dlen, unsigned int count);
>> + void (*pfouts)(void *devobj, unsigned long ptaddr,
>> + const void *outbuf, size_t dlen,
>> + unsigned int count);
>> + void *devpara;
>> +};
>> +
>> +extern struct extio_ops *arm64_extio_ops;
>> +
>> +#define DECLARE_EXTIO(bw, type) \
>> +extern type in##bw(unsigned long addr); \
>> +extern void out##bw(type value, unsigned long addr); \
>> +extern void ins##bw(unsigned long addr, void *buffer, unsigned int count);\
>> +extern void outs##bw(unsigned long addr, const void *buffer, unsigned int count);
>> +
>> +#define BUILD_EXTIO(bw, type) \
>> +type in##bw(unsigned long addr) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + return read##bw(PCI_IOBASE + addr); \
>> + return arm64_extio_ops->pfin ? \
>> + arm64_extio_ops->pfin(arm64_extio_ops->devpara, \
>> + addr, sizeof(type)) : -1; \
>> +} \
>> + \
>> +void out##bw(type value, unsigned long addr) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + write##bw(value, PCI_IOBASE + addr); \
>> + else \
>> + if (arm64_extio_ops->pfout) \
>> + arm64_extio_ops->pfout(arm64_extio_ops->devpara,\
>> + addr, value, sizeof(type)); \
>> +} \
>> + \
>> +void ins##bw(unsigned long addr, void *buffer, unsigned int count) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + reads##bw(PCI_IOBASE + addr, buffer, count); \
>> + else \
>> + if (arm64_extio_ops->pfins) \
>> + arm64_extio_ops->pfins(arm64_extio_ops->devpara,\
>> + addr, buffer, sizeof(type), count); \
>> +} \
>> + \
>> +void outs##bw(unsigned long addr, const void *buffer, unsigned int count) \
>> +{ \
>> + if (!arm64_extio_ops || arm64_extio_ops->start > addr || \
>> + arm64_extio_ops->end < addr) \
>> + writes##bw(PCI_IOBASE + addr, buffer, count); \
>> + else \
>> + if (arm64_extio_ops->pfouts) \
>> + arm64_extio_ops->pfouts(arm64_extio_ops->devpara,\
>> + addr, buffer, sizeof(type), count); \
>> +}
>> +
>> +static inline void arm64_set_extops(struct extio_ops *ops)
>> +{
>> + if (ops)
>> + WRITE_ONCE(arm64_extio_ops, ops);
>> +}
>> +
>> +#endif /* __LINUX_EXTIO_H*/
>> diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
>> index 0bba427..136735d 100644
>> --- a/arch/arm64/include/asm/io.h
>> +++ b/arch/arm64/include/asm/io.h
>> @@ -31,6 +31,7 @@
>> #include <asm/early_ioremap.h>
>> #include <asm/alternative.h>
>> #include <asm/cpufeature.h>
>> +#include <asm/extio.h>
>>
>> #include <xen/xen.h>
>>
>> @@ -149,6 +150,34 @@ static inline u64 __raw_readq(const volatile void __iomem *addr)
>> #define IO_SPACE_LIMIT (PCI_IO_SIZE - 1)
>> #define PCI_IOBASE ((void __iomem *)PCI_IO_START)
>>
>> +
>> +/*
>> + * redefine the in(s)b/out(s)b for indirect-IO.
>> + */
>> +#ifdef CONFIG_ARM64_INDIRECT_PIO
>> +#define inb inb
>> +#define outb outb
>> +#define insb insb
>> +#define outsb outsb
>> +/* external declaration */
>> +DECLARE_EXTIO(b, u8)
>> +
>> +#define inw inw
>> +#define outw outw
>> +#define insw insw
>> +#define outsw outsw
>> +
>> +DECLARE_EXTIO(w, u16)
>> +
>> +#define inl inl
>> +#define outl outl
>> +#define insl insl
>> +#define outsl outsl
>> +
>> +DECLARE_EXTIO(l, u32)
>> +#endif
>> +
>> +
>> /*
>> * String version of I/O memory access operations.
>> */
>> diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
>> index 7d66bba..60e0482 100644
>> --- a/arch/arm64/kernel/Makefile
>> +++ b/arch/arm64/kernel/Makefile
>> @@ -31,6 +31,7 @@ arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \
>> sys_compat.o entry32.o
>> arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o
>> arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o
>> +arm64-obj-$(CONFIG_ARM64_INDIRECT_PIO) += extio.o
>> arm64-obj-$(CONFIG_ARM64_MODULE_PLTS) += module-plts.o
>> arm64-obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o
>> arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o
>> diff --git a/arch/arm64/kernel/extio.c b/arch/arm64/kernel/extio.c
>> new file mode 100644
>> index 0000000..647b3fa
>> --- /dev/null
>> +++ b/arch/arm64/kernel/extio.c
>> @@ -0,0 +1,27 @@
>> +/*
>> + * Copyright (C) 2016 Hisilicon Limited, All Rights Reserved.
>> + * Author: Zhichang Yuan <yuanzhichang@hisilicon.com>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
>> + */
>> +
>> +#include <linux/io.h>
>> +
>> +struct extio_ops *arm64_extio_ops;
>> +
>> +
>> +BUILD_EXTIO(b, u8)
>> +
>> +BUILD_EXTIO(w, u16)
>> +
>> +BUILD_EXTIO(l, u32)
>> --
>> 1.9.1
>>
>
>
>
next prev parent reply other threads:[~2016-12-23 1:43 UTC|newest]
Thread overview: 263+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-08 3:47 [PATCH V5 0/3] ARM64 LPC: legacy ISA I/O support zhichang.yuan
2016-11-08 3:47 ` zhichang.yuan
2016-11-08 3:47 ` zhichang.yuan
2016-11-08 3:47 ` [PATCH V5 1/3] ARM64 LPC: Indirect ISA port IO introduced zhichang.yuan
2016-11-08 3:47 ` zhichang.yuan
2016-11-08 3:47 ` zhichang.yuan
2016-11-08 12:03 ` Mark Rutland
2016-11-08 12:03 ` Mark Rutland
2016-11-08 12:03 ` Mark Rutland
2016-11-08 16:09 ` Arnd Bergmann
2016-11-08 16:09 ` Arnd Bergmann
2016-11-08 16:09 ` Arnd Bergmann
2016-11-08 16:09 ` Arnd Bergmann
2016-11-08 16:15 ` Arnd Bergmann
2016-11-08 16:15 ` Arnd Bergmann
2016-11-08 23:16 ` Benjamin Herrenschmidt
2016-11-08 23:16 ` Benjamin Herrenschmidt
2016-11-08 23:16 ` Benjamin Herrenschmidt
2016-11-10 8:33 ` zhichang.yuan
2016-11-10 8:33 ` zhichang.yuan
2016-11-10 8:33 ` zhichang.yuan
2016-11-10 11:22 ` Mark Rutland
2016-11-10 11:22 ` Mark Rutland
2016-11-10 19:32 ` Benjamin Herrenschmidt
2016-11-10 19:32 ` Benjamin Herrenschmidt
2016-11-10 19:32 ` Benjamin Herrenschmidt
2016-11-10 19:32 ` Benjamin Herrenschmidt
2016-11-11 10:07 ` zhichang.yuan
2016-11-11 10:07 ` zhichang.yuan
2016-11-11 10:07 ` zhichang.yuan
2016-11-18 9:20 ` Arnd Bergmann
2016-11-18 9:20 ` Arnd Bergmann
2016-11-18 9:20 ` Arnd Bergmann
2016-11-18 11:12 ` zhichang.yuan
2016-11-18 11:12 ` zhichang.yuan
2016-11-18 11:12 ` zhichang.yuan
2016-11-18 11:38 ` Arnd Bergmann
2016-11-18 11:38 ` Arnd Bergmann
2016-11-21 12:58 ` John Garry
2016-11-21 12:58 ` John Garry
2016-11-21 12:58 ` John Garry
2016-11-08 16:12 ` Will Deacon
2016-11-08 16:12 ` Will Deacon
2016-11-08 16:12 ` Will Deacon
2016-11-08 16:33 ` John Garry
2016-11-08 16:33 ` John Garry
2016-11-08 16:33 ` John Garry
2016-11-08 16:33 ` John Garry
2016-11-08 16:49 ` Will Deacon
2016-11-08 16:49 ` Will Deacon
2016-11-08 17:05 ` John Garry
2016-11-08 17:05 ` John Garry
2016-11-08 17:05 ` John Garry
2016-11-08 22:35 ` Arnd Bergmann
2016-11-08 22:35 ` Arnd Bergmann
2016-11-08 22:35 ` Arnd Bergmann
2016-11-09 11:29 ` John Garry
2016-11-09 11:29 ` John Garry
2016-11-09 11:29 ` John Garry
2016-11-09 21:33 ` Arnd Bergmann
2016-11-09 21:33 ` Arnd Bergmann
2016-11-09 21:33 ` Arnd Bergmann
2016-12-22 8:15 ` Ming Lei
2016-12-22 8:15 ` Ming Lei
2016-12-22 8:15 ` Ming Lei
2016-12-22 8:15 ` Ming Lei
2016-12-23 1:43 ` zhichang.yuan [this message]
2016-12-23 1:43 ` zhichang.yuan
2016-12-23 1:43 ` zhichang.yuan
2016-12-23 1:43 ` zhichang.yuan
2016-12-23 7:24 ` Ming Lei
2016-12-23 7:24 ` Ming Lei
2016-12-23 7:24 ` Ming Lei
2016-12-23 7:24 ` Ming Lei
2017-01-06 11:43 ` Arnd Bergmann
2017-01-06 11:43 ` Arnd Bergmann
2017-01-06 11:43 ` Arnd Bergmann
2017-01-06 11:43 ` Arnd Bergmann
2017-01-07 1:25 ` 答复: " Yuanzhichang
2016-11-08 3:47 ` [PATCH V5 2/3] ARM64 LPC: Add missing range exception for special ISA zhichang.yuan
2016-11-08 3:47 ` zhichang.yuan
2016-11-08 3:47 ` zhichang.yuan
2016-11-08 5:17 ` kbuild test robot
2016-11-08 5:17 ` kbuild test robot
2016-11-08 5:17 ` kbuild test robot
2016-11-08 5:17 ` kbuild test robot
2016-11-08 5:27 ` kbuild test robot
2016-11-08 5:27 ` kbuild test robot
2016-11-08 5:27 ` kbuild test robot
2016-11-08 11:49 ` Mark Rutland
2016-11-08 11:49 ` Mark Rutland
2016-11-08 16:19 ` Arnd Bergmann
2016-11-08 16:19 ` Arnd Bergmann
2016-11-08 16:19 ` Arnd Bergmann
2016-11-08 17:10 ` Mark Rutland
2016-11-08 17:10 ` Mark Rutland
2016-11-08 17:10 ` Mark Rutland
2016-11-09 13:54 ` One Thousand Gnomes
2016-11-09 13:54 ` One Thousand Gnomes
2016-11-09 14:51 ` Gabriele Paoloni
2016-11-09 14:51 ` Gabriele Paoloni
2016-11-09 14:51 ` Gabriele Paoloni
2016-11-09 21:38 ` Arnd Bergmann
2016-11-09 21:38 ` Arnd Bergmann
2016-11-09 21:38 ` Arnd Bergmann
2016-11-14 11:11 ` One Thousand Gnomes
2016-11-14 11:11 ` One Thousand Gnomes
2016-11-14 11:11 ` One Thousand Gnomes
2016-11-18 9:22 ` Arnd Bergmann
2016-11-18 9:22 ` Arnd Bergmann
2016-11-18 9:22 ` Arnd Bergmann
2016-11-18 9:22 ` Arnd Bergmann
2016-11-08 23:12 ` Benjamin Herrenschmidt
2016-11-08 23:12 ` Benjamin Herrenschmidt
2016-11-08 23:12 ` Benjamin Herrenschmidt
2016-11-08 23:12 ` Benjamin Herrenschmidt
2016-11-09 11:20 ` Mark Rutland
2016-11-09 11:20 ` Mark Rutland
2016-11-10 7:08 ` Benjamin Herrenschmidt
2016-11-10 7:08 ` Benjamin Herrenschmidt
2016-11-10 7:08 ` Benjamin Herrenschmidt
2016-11-09 11:39 ` liviu.dudau
2016-11-09 11:39 ` liviu.dudau at arm.com
2016-11-09 11:39 ` liviu.dudau-5wv7dgnIgG8
2016-11-09 16:16 ` Gabriele Paoloni
2016-11-09 16:16 ` Gabriele Paoloni
2016-11-09 16:16 ` Gabriele Paoloni
2016-11-09 16:16 ` Gabriele Paoloni
2016-11-09 16:50 ` liviu.dudau
2016-11-09 16:50 ` liviu.dudau at arm.com
2016-11-09 16:50 ` liviu.dudau-5wv7dgnIgG8
2016-11-10 6:24 ` zhichang.yuan
2016-11-10 6:24 ` zhichang.yuan
2016-11-10 6:24 ` zhichang.yuan
2016-11-10 16:06 ` Gabriele Paoloni
2016-11-10 16:06 ` Gabriele Paoloni
2016-11-10 16:06 ` Gabriele Paoloni
2016-11-10 16:06 ` Gabriele Paoloni
2016-11-11 10:37 ` liviu.dudau
2016-11-11 10:37 ` liviu.dudau at arm.com
2016-11-11 10:37 ` liviu.dudau
2016-11-08 3:47 ` [PATCH V5 3/3] ARM64 LPC: LPC driver implementation on Hip06 zhichang.yuan
2016-11-08 3:47 ` zhichang.yuan
2016-11-08 3:47 ` zhichang.yuan
2016-11-08 6:11 ` kbuild test robot
2016-11-08 6:11 ` kbuild test robot
2016-11-08 6:11 ` kbuild test robot
2016-11-08 16:24 ` Arnd Bergmann
2016-11-08 16:24 ` Arnd Bergmann
2016-11-09 12:10 ` Gabriele Paoloni
2016-11-09 12:10 ` Gabriele Paoloni
2016-11-09 12:10 ` Gabriele Paoloni
2016-11-09 21:34 ` Arnd Bergmann
2016-11-09 21:34 ` Arnd Bergmann
2016-11-09 21:34 ` Arnd Bergmann
2016-11-09 21:34 ` Arnd Bergmann
2016-11-10 6:40 ` zhichang.yuan
2016-11-10 6:40 ` zhichang.yuan
2016-11-10 6:40 ` zhichang.yuan
2016-11-10 9:12 ` Arnd Bergmann
2016-11-10 9:12 ` Arnd Bergmann
2016-11-10 9:12 ` Arnd Bergmann
2016-11-10 12:36 ` zhichang.yuan
2016-11-10 12:36 ` zhichang.yuan
2016-11-10 12:36 ` zhichang.yuan
2016-11-18 11:46 ` Arnd Bergmann
2016-11-18 11:46 ` Arnd Bergmann
2016-11-18 11:46 ` Arnd Bergmann
2016-11-18 11:46 ` Arnd Bergmann
2016-11-10 15:36 ` Gabriele Paoloni
2016-11-10 15:36 ` Gabriele Paoloni
2016-11-10 15:36 ` Gabriele Paoloni
2016-11-10 16:07 ` Arnd Bergmann
2016-11-10 16:07 ` Arnd Bergmann
2016-11-10 16:07 ` Arnd Bergmann
2016-11-11 10:09 ` zhichang.yuan
2016-11-11 10:09 ` zhichang.yuan
2016-11-11 10:09 ` zhichang.yuan
2016-11-11 10:48 ` liviu.dudau
2016-11-11 10:48 ` liviu.dudau at arm.com
2016-11-11 10:48 ` liviu.dudau
2016-11-11 13:39 ` Gabriele Paoloni
2016-11-11 13:39 ` Gabriele Paoloni
2016-11-11 13:39 ` Gabriele Paoloni
2016-11-11 14:45 ` liviu.dudau
2016-11-11 14:45 ` liviu.dudau at arm.com
2016-11-11 14:45 ` liviu.dudau-5wv7dgnIgG8
2016-11-11 15:53 ` Gabriele Paoloni
2016-11-11 15:53 ` Gabriele Paoloni
2016-11-11 15:53 ` Gabriele Paoloni
2016-11-11 15:53 ` Gabriele Paoloni
2016-11-11 18:16 ` liviu.dudau
2016-11-11 18:16 ` liviu.dudau at arm.com
2016-11-11 18:16 ` liviu.dudau
2016-11-14 8:26 ` Gabriele Paoloni
2016-11-14 8:26 ` Gabriele Paoloni
2016-11-14 8:26 ` Gabriele Paoloni
2016-11-14 8:26 ` Gabriele Paoloni
2016-11-14 11:26 ` liviu.dudau
2016-11-14 11:26 ` liviu.dudau at arm.com
2016-11-14 11:26 ` liviu.dudau
2016-11-18 10:17 ` Arnd Bergmann
2016-11-18 10:17 ` Arnd Bergmann
2016-11-18 10:17 ` Arnd Bergmann
2016-11-18 12:07 ` Gabriele Paoloni
2016-11-18 12:07 ` Gabriele Paoloni
2016-11-18 12:07 ` Gabriele Paoloni
2016-11-18 12:24 ` Arnd Bergmann
2016-11-18 12:24 ` Arnd Bergmann
2016-11-18 12:24 ` Arnd Bergmann
2016-11-18 12:24 ` Arnd Bergmann
2016-11-18 12:53 ` Gabriele Paoloni
2016-11-18 12:53 ` Gabriele Paoloni
2016-11-18 12:53 ` Gabriele Paoloni
2016-11-18 12:53 ` Gabriele Paoloni
2016-11-18 13:42 ` Arnd Bergmann
2016-11-18 13:42 ` Arnd Bergmann
2016-11-18 13:42 ` Arnd Bergmann
2016-11-18 16:18 ` Gabriele Paoloni
2016-11-18 16:18 ` Gabriele Paoloni
2016-11-18 16:18 ` Gabriele Paoloni
2016-11-18 16:34 ` Arnd Bergmann
2016-11-18 16:34 ` Arnd Bergmann
2016-11-18 16:34 ` Arnd Bergmann
2016-11-18 17:03 ` Gabriele Paoloni
2016-11-18 17:03 ` Gabriele Paoloni
2016-11-18 17:03 ` Gabriele Paoloni
2016-11-23 14:16 ` Arnd Bergmann
2016-11-23 14:16 ` Arnd Bergmann
2016-11-23 14:16 ` Arnd Bergmann
2016-11-23 14:16 ` Arnd Bergmann
2016-11-23 15:22 ` Gabriele Paoloni
2016-11-23 15:22 ` Gabriele Paoloni
2016-11-23 15:22 ` Gabriele Paoloni
2016-11-23 17:07 ` Arnd Bergmann
2016-11-23 17:07 ` Arnd Bergmann
2016-11-23 17:07 ` Arnd Bergmann
2016-11-23 23:23 ` Arnd Bergmann
2016-11-23 23:23 ` Arnd Bergmann
2016-11-23 23:23 ` Arnd Bergmann
2016-11-24 9:12 ` zhichang.yuan
2016-11-24 9:12 ` zhichang.yuan
2016-11-24 9:12 ` zhichang.yuan
2016-11-24 10:24 ` Arnd Bergmann
2016-11-24 10:24 ` Arnd Bergmann
2016-11-24 10:24 ` Arnd Bergmann
2016-11-24 10:24 ` Arnd Bergmann
2016-11-25 8:46 ` Gabriele Paoloni
2016-11-25 8:46 ` Gabriele Paoloni
2016-11-25 8:46 ` Gabriele Paoloni
2016-11-25 12:03 ` Arnd Bergmann
2016-11-25 12:03 ` Arnd Bergmann
2016-11-25 12:03 ` Arnd Bergmann
2016-11-25 16:27 ` Gabriele Paoloni
2016-11-25 16:27 ` Gabriele Paoloni
2016-11-25 16:27 ` Gabriele Paoloni
2016-11-11 16:54 ` zhichang.yuan
2016-11-11 16:54 ` zhichang.yuan
2016-11-11 16:54 ` zhichang.yuan
2016-11-11 16:54 ` zhichang.yuan
2016-11-14 11:06 ` One Thousand Gnomes
2016-11-14 11:06 ` One Thousand Gnomes
2016-11-14 11:06 ` One Thousand Gnomes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=585C815B.4030000@hisilicon.com \
--to=yuanzhichang@hisilicon.com \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=gabriele.paoloni@huawei.com \
--cc=john.garry@huawei.com \
--cc=kantyzc@163.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=liviu.dudau@arm.com \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=minyard@acm.org \
--cc=olof@lixom.net \
--cc=robh+dt@kernel.org \
--cc=tom.leiming@gmail.com \
--cc=will.deacon@arm.com \
--cc=xuwei5@hisilicon.com \
--cc=zhichang.yuan02@gmail.com \
--cc=zourongrong@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.