From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jun Kamada Subject: [RFC] [3/4] PV driver for FC transport layer (pv-scsi frontend driver) Date: Fri, 29 Jun 2007 20:07:32 +0900 Message-ID: <20070629200701.69EF.KAMA@jp.fujitsu.com> References: <20070629195146.69E6.KAMA@jp.fujitsu.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------_4684E7D56BA004902400_MULTIPART_MIXED_" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20070629195146.69E6.KAMA@jp.fujitsu.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com Cc: kama@jp.fujitsu.com, xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org --------_4684E7D56BA004902400_MULTIPART_MIXED_ Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Jun Kamada Linux Technology Development Div. Server Systems Unit Fujitsu Ltd. kama@jp.fujitsu.com --------_4684E7D56BA004902400_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="scsifront.patch" Content-Disposition: attachment; filename="scsifront.patch" Content-Transfer-Encoding: base64 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIEp1biBLYW1hZGEgPGthbWFAanAuZnVqaXRzdS5j b20+CiMgRGF0ZSAxMTgzMTA4MTU5IC0zMjQwMAojIE5vZGUgSUQgMGYxNjliMzZiZTgxMjkzZGYw OWYxYzY2YjYyODRkYzAwMjcwODU0ZgojIFBhcmVudCAgMDZkYjBlMTM3MzFjNjUwYzViMmRkZjZk ODA0OGY5Yzg5ZDg5YTAxMgphZGQgc2NzaWZyb250IGRyaXZlcgoKU2lnbmVkLW9mZi1ieTogVG9t b25hcmkgSG9yaWtvc2hpIDx0Lmhvcmlrb3NoaUBqcC5mdWppdHN1LmNvbT4KU2lnbmVkLW9mZi1i eTogVHN1bmVoaXNhIERvaSA8RG9pLlRzdW5laGlzYUBqcC5mdWppdHN1LmNvbT4KU2lnbmVkLW9m Zi1ieTogSnVuIEthbWFkYSA8a2FtYUBqcC5mdWppdHN1LmNvbT4KU2lnbmVkLW9mZi1ieTogQWtp cmEgSGF5YWthd2EgPGhheWFrYXdhLmFraXJhQGpwLmZ1aml0c3UuY29tPgoKZGlmZiAtciAwNmRi MGUxMzczMWMgLXIgMGYxNjliMzZiZTgxIGRyaXZlcnMveGVuL3Njc2lmcm9udC9NYWtlZmlsZQot LS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9kcml2ZXJz L3hlbi9zY3NpZnJvbnQvTWFrZWZpbGUJRnJpIEp1biAyOSAxODowOToxOSAyMDA3ICswOTAwCkBA IC0wLDAgKzEsNCBAQAorb2JqLSQoQ09ORklHX1hFTl9TQ1NJX0ZST05URU5EKQk6PSB4ZW5zY3Np Lm8KKworeGVuc2NzaS1vYmpzIDo9IHNjc2lmcm9udC5vCisKZGlmZiAtciAwNmRiMGUxMzczMWMg LXIgMGYxNjliMzZiZTgxIGRyaXZlcnMveGVuL3Njc2lmcm9udC9zY3NpZnJvbnQuYwotLS0gL2Rl di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9kcml2ZXJzL3hlbi9z Y3NpZnJvbnQvc2NzaWZyb250LmMJRnJpIEp1biAyOSAxODowOToxOSAyMDA3ICswOTAwCkBAIC0w LDAgKzEsNTI0IEBACisvKgorICogWGVuIFNDU0kgZnJvbnRlbmQgZHJpdmVyCisgKgorICogQ29w eXJpZ2h0IChjKSAyMDA3LCBGVUpJVFNVIExpbWl0ZWQKKyAqCisgKiBCYXNlZCBvbiB0aGUgc2Nz aWZyb250IGRyaXZlciBjb2RlIGJ5IEZVSklUQSBUb21vbm9yaQorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IG9yLCB3aGVuIGRpc3RyaWJ1dGVkCisgKiBzZXBhcmF0ZWx5IGZyb20gdGhlIExpbnV4IGtl cm5lbCBvciBpbmNvcnBvcmF0ZWQgaW50byBvdGhlcgorICogc29mdHdhcmUgcGFja2FnZXMsIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBsaWNlbnNlOgorICogCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBj b3B5CisgKiBvZiB0aGlzIHNvdXJjZSBmaWxlICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksCisgKiBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwKKyAqIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKyAqIAorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICogCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBU SEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KKyNpbmNsdWRl IDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUg PGxpbnV4L3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8bGludXgvdWlvLmg+CisjaW5jbHVkZSA8 c2NzaS9zY3NpLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2NtbmQuaD4KKyNpbmNsdWRlIDxzY3Np L3Njc2lfaG9zdC5oPgorI2luY2x1ZGUgPHNjc2kvc2NzaV9kZXZpY2UuaD4KKyNpbmNsdWRlIDx4 ZW4vZXZ0Y2huLmg+CisjaW5jbHVkZSA8eGVuL3hlbmJ1cy5oPgorI2luY2x1ZGUgPHhlbi9pbnRl cmZhY2UveGVuLmg+CisjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS9pby9zY3NpaWYuaD4KKyNpbmNs dWRlIDx4ZW4vaW50ZXJmYWNlL2lvL3JpbmcuaD4KKyNpbmNsdWRlIDx4ZW4vZ250dGFiLmg+Cisj aW5jbHVkZSA8YXNtL2h5cGVydmlzb3IuaD4KKworI2lmZGVmIEhBVkVfWEVOX1BMQVRGT1JNX0NP TVBBVF9ICisjaW5jbHVkZSA8eGVuL3BsYXRmb3JtLWNvbXBhdC5oPgorI2VuZGlmCisKKyNkZWZp bmUgR1JBTlRfSU5WQUxJRF9SRUYgMAorCisKKyNkZWZpbmUgRFBSSU5USyhfZiwgX2EuLi4pCQkJ XAorCXByX2RlYnVnKCIoZmlsZT0lcywgbGluZT0lZCkgIiBfZiwJXAorCQkgX19GSUxFX18gLCBf X0xJTkVfXyAsICMjIF9hICkKKworCitzdHJ1Y3Qgc2NzaV9zaGFkb3cgeworCXN0cnVjdCBzY3Np aWZfcmVxdWVzdCByaW5nX3JlcTsKKwl1bnNpZ25lZCBsb25nIHJlcV9zY3NpX2NtbmQ7Cit9Owor CisjZGVmaW5lIFNDU0lfUklOR19TSVpFIF9fUklOR19TSVpFKChzdHJ1Y3Qgc2NzaWlmX3NyaW5n ICopMCwgUEFHRV9TSVpFKQorCitzdHJ1Y3Qgc2NzaWZyb250X2luZm8geworCXN0cnVjdCB4ZW5i dXNfZGV2aWNlICpkZXY7CisJc3RydWN0IFNjc2lfSG9zdCAqaG9zdDsKKwl1bnNpZ25lZCBpbnQg ZXZ0Y2huOworCXVuc2lnbmVkIGludCBpcnE7CisJdW5zaWduZWQgbG9uZyByaW5nX3JlZjsKKwlz dHJ1Y3Qgc2NzaWlmX2Zyb250X3JpbmcgcmluZzsKKwlzdHJ1Y3Qgc2NzaV9zaGFkb3cgc2hhZG93 W1NDU0lfUklOR19TSVpFXTsKKwl1bnNpZ25lZCBsb25nIHNoYWRvd19mcmVlOworfTsKKworCitz dGF0aWMgaW5saW5lIGludCBHRVRfSURfRlJPTV9GUkVFTElTVCgKKwlzdHJ1Y3Qgc2NzaWZyb250 X2luZm8gKmluZm8pCit7CisJdW5zaWduZWQgbG9uZyBmcmVlID0gaW5mby0+c2hhZG93X2ZyZWU7 CisJQlVHX09OKGZyZWUgPiBTQ1NJX1JJTkdfU0laRSk7CisJaW5mby0+c2hhZG93X2ZyZWUgPSBp bmZvLT5zaGFkb3dbZnJlZV0ucmluZ19yZXEucnFpZDsKKwlpbmZvLT5zaGFkb3dbZnJlZV0ucmlu Z19yZXEucnFpZCA9IDB4MGZmZmZmZWU7IC8qIGRlYnVnICovCisJcmV0dXJuIGZyZWU7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBBRERfSURfVE9fRlJFRUxJU1QoCisJc3RydWN0IHNjc2lmcm9u dF9pbmZvICppbmZvLCB1bnNpZ25lZCBsb25nIGlkKQoreworCWluZm8tPnNoYWRvd1tpZF0ucmlu Z19yZXEucnFpZCAgPSBpbmZvLT5zaGFkb3dfZnJlZTsKKwlpbmZvLT5zaGFkb3dbaWRdLnJlcV9z Y3NpX2NtbmQgPSAwOworCWluZm8tPnNoYWRvd19mcmVlID0gaWQ7Cit9CisKK3N0YXRpYyB2b2lk IHNjc2lmcm9udF9mcmVlKHN0cnVjdCBzY3NpZnJvbnRfaW5mbyAqaW5mbykKK3sKKwkKKwlzY3Np X3JlbW92ZV9ob3N0KGluZm8tPmhvc3QpOworCXNjc2lfaG9zdF9wdXQoaW5mby0+aG9zdCk7CisK KwlmbHVzaF9zY2hlZHVsZWRfd29yaygpOworCisJaWYgKGluZm8tPnJpbmdfcmVmICE9IEdSQU5U X0lOVkFMSURfUkVGKSB7CisJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3MoaW5mby0+cmluZ19y ZWYsIDAsCisJCQkJCSh1bnNpZ25lZCBsb25nKWluZm8tPnJpbmcuc3JpbmcpOworCQlpbmZvLT5y aW5nX3JlZiA9IEdSQU5UX0lOVkFMSURfUkVGOworCQlpbmZvLT5yaW5nLnNyaW5nID0gTlVMTDsK Kwl9CisKKwlpZiAoaW5mby0+aXJxKQorCQl1bmJpbmRfZnJvbV9pcnFoYW5kbGVyKGluZm8tPmly cSwgaW5mbyk7CisJaW5mby0+aXJxID0gMDsKK30KKworc3RhdGljIGludCBtYXBfZGF0YV9mb3Jf cmVxdWVzdChzdHJ1Y3Qgc2NzaWZyb250X2luZm8gKmluZm8sCisJCXN0cnVjdCBzY3NpX2NtbmQg KnNjLCBzdHJ1Y3Qgc2NzaWlmX3JlcXVlc3QgKnJpbmdfcmVxKQoreworCXN0cnVjdCBzY2F0dGVy bGlzdCAqc2cgPSBzYy0+cmVxdWVzdF9idWZmZXI7CisKKwlncmFudF9yZWZfdCBncmVmX2hlYWQ7 CisJaW50IGVyciwgaSwgcmVmOworCWludCB3cml0ZSA9IChzYy0+c2NfZGF0YV9kaXJlY3Rpb24g PT0gRE1BX1RPX0RFVklDRSk7CisKKwlpZiAoIXNnIHx8IHNjLT5zY19kYXRhX2RpcmVjdGlvbiA9 PSBETUFfTk9ORSkKKwkJcmV0dXJuIDA7CisKKwllcnIgPSBnbnR0YWJfYWxsb2NfZ3JhbnRfcmVm ZXJlbmNlcyhTR19UQUJMRVNJWkUsICZncmVmX2hlYWQpOworCWlmIChlcnIpCisJCXJldHVybiAt RU5PTUVNOworCisJZm9yIChpID0gMDsgaSA8IHNjLT51c2Vfc2c7IGkrKywgc2crKykgeworCQly ZWYgPSBnbnR0YWJfY2xhaW1fZ3JhbnRfcmVmZXJlbmNlKCZncmVmX2hlYWQpOworCQlCVUdfT04o cmVmID09IC1FTk9TUEMpOyAgLypGSVhNRSovCisKKwkJZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNj ZXNzX3JlZihyZWYsIGluZm8tPmRldi0+b3RoZXJlbmRfaWQsCisJCQkocGFnZV90b19waHlzKHNn LT5wYWdlKSA+PiBQQUdFX1NISUZUKSwgd3JpdGUpOworCQlyaW5nX3JlcS0+c2VnW2ldLmdyZWYg ICA9IHJlZjsKKwkJcmluZ19yZXEtPnNlZ1tpXS5vZmZzZXQgPSBzZy0+b2Zmc2V0OworCQlyaW5n X3JlcS0+c2VnW2ldLmxlbmd0aCA9IHNnLT5sZW5ndGg7CisJfQorCisJZ250dGFiX2ZyZWVfZ3Jh bnRfcmVmZXJlbmNlcyhncmVmX2hlYWQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg c2NzaWZyb250X3F1ZXVlY29tbWFuZChzdHJ1Y3Qgc2NzaV9jbW5kICpzYywKKwkJCQkJdm9pZCAo KmRvbmUpKHN0cnVjdCBzY3NpX2NtbmQgKikpCit7CisJc3RydWN0IFNjc2lfSG9zdCAqaG9zdCA9 IHNjLT5kZXZpY2UtPmhvc3Q7CisJc3RydWN0IHNjc2lmcm9udF9pbmZvICppbmZvID0gKHN0cnVj dCBzY3NpZnJvbnRfaW5mbyAqKSBob3N0LT5ob3N0ZGF0YTsKKwlzdHJ1Y3Qgc2NzaWlmX3JlcXVl c3QgKnJpbmdfcmVxOworCXN0cnVjdCBzY3NpaWZfZnJvbnRfcmluZyAqcmluZyA9ICZpbmZvLT5y aW5nOworCWludCBlcnIsIG5vdGlmeTsKKwl1bnNpZ25lZCBsb25nIGlkOworCisJaWYgKGluZm8t PmRldi0+c3RhdGUgIT0gWGVuYnVzU3RhdGVDb25uZWN0ZWQgfHwgUklOR19GVUxMKHJpbmcpKSB7 CisJCXByaW50aygiYnVzeSAldSFcbiIsIGluZm8tPmRldi0+c3RhdGUpOworCQlyZXR1cm4gU0NT SV9NTFFVRVVFX0hPU1RfQlVTWTsKKwl9CisJc2MtPnNjc2lfZG9uZSA9IGRvbmU7CisJc2MtPnJl c3VsdCAgICA9IDA7CisKKwlyaW5nX3JlcSA9IFJJTkdfR0VUX1JFUVVFU1QoJmluZm8tPnJpbmcs IHJpbmctPnJlcV9wcm9kX3B2dCk7CisKKwlyaW5nX3JlcS0+aWQgICAgICA9IHNjLT5kZXZpY2Ut PmlkOworCXJpbmdfcmVxLT5sdW4gICAgID0gc2MtPmRldmljZS0+bHVuOworCXJpbmdfcmVxLT5j aGFubmVsID0gc2MtPmRldmljZS0+Y2hhbm5lbDsKKwlyaW5nX3JlcS0+Y21kX2xlbiA9IHNjLT5j bWRfbGVuOworCisJQlVHX09OKHNjLT5jbWRfbGVuID4gTUFYX0NPTU1BTkRfU0laRSk7CisKKwlp ZiAoIHNjLT5jbWRfbGVuICkKKwkJbWVtY3B5KHJpbmdfcmVxLT5jbW5kLCBzYy0+Y21uZCwgc2Mt PmNtZF9sZW4pOworCWVsc2UKKwkJbWVtc2V0KHJpbmdfcmVxLT5jbW5kLCAwLCBNQVhfQ09NTUFO RF9TSVpFKTsKKworCXJpbmdfcmVxLT51c2Vfc2cgICAgICAgICAgICAgID0gc2MtPnVzZV9zZzsK KwlyaW5nX3JlcS0+c2NfZGF0YV9kaXJlY3Rpb24gICA9IHNjLT5zY19kYXRhX2RpcmVjdGlvbjsK KwlyaW5nX3JlcS0+cmVxdWVzdF9idWZmbGVuICAgICA9IHNjLT5yZXF1ZXN0X2J1ZmZsZW47CisJ cmluZ19yZXEtPnJldHJpZXMgICAgICAgICAgICAgPSBzYy0+cmV0cmllczsKKwlyaW5nX3JlcS0+ dGltZW91dF9wZXJfY29tbWFuZCA9IHNjLT50aW1lb3V0X3Blcl9jb21tYW5kOworCisJaWQgPSBH RVRfSURfRlJPTV9GUkVFTElTVChpbmZvKTsJLyogdXNlIGlkIGJ5IHJlc3BvbnNlICovCisJaW5m by0+c2hhZG93W2lkXS5yZXFfc2NzaV9jbW5kID0gKHVuc2lnbmVkIGxvbmcpc2M7CisJcmluZ19y ZXEtPnJxaWQgICAgICAgICAgICAgICAgID0gaWQ7CisJZXJyID0gbWFwX2RhdGFfZm9yX3JlcXVl c3QoaW5mbywgc2MsIHJpbmdfcmVxKTsKKwlpZiAoZXJyKSB7CisJCXByaW50aygiJXMgZXJyb3Jc biIsX19GVU5DVElPTl9fKTsKKwkJcmV0dXJuIFNDU0lfTUxRVUVVRV9IT1NUX0JVU1k7CisJfQor CisJcmluZy0+cmVxX3Byb2RfcHZ0Kys7CisKKwlpbmZvLT5zaGFkb3dbaWRdLnJpbmdfcmVxID0g KnJpbmdfcmVxOworCisJUklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVDS19OT1RJRlkocmluZywg bm90aWZ5KTsKKworCWlmIChub3RpZnkpCisJCW5vdGlmeV9yZW1vdGVfdmlhX2lycShpbmZvLT5p cnEpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2NzaWZyb250X2VoX2Fib3J0X2hh bmRsZXIoc3RydWN0IHNjc2lfY21uZCAqc2MpCit7CisJLyogbm90IGltcGxlbWVudGVkICovCisJ QlVHKCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHNjc2lmcm9udF9jbWRfZG9uZShz dHJ1Y3Qgc2NzaV9zaGFkb3cgKnMpCit7CisJaW50IGk7CisKKwlpZiAoIXMtPnJpbmdfcmVxLnJl cXVlc3RfYnVmZmxlbiB8fAorCQkocy0+cmluZ19yZXEuc2NfZGF0YV9kaXJlY3Rpb24gIT0gRE1B X1RPX0RFVklDRSAmJgorCQkJcy0+cmluZ19yZXEuc2NfZGF0YV9kaXJlY3Rpb24gIT0gRE1BX0ZS T01fREVWSUNFKSkgeworCQlyZXR1cm47CisJfQorCisJaWYgKCFzLT5yaW5nX3JlcS51c2Vfc2cp CisJCXJldHVybjsKKworCWZvciAoaSA9IDA7IGkgPCBzLT5yaW5nX3JlcS51c2Vfc2c7IGkrKyAp CisJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3Mocy0+cmluZ19yZXEuc2VnW2ldLmdyZWYsIDAs IDBVTCk7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdCBzY3NpZnJvbnRfaW50cihpbnQgaXJxLCB2 b2lkICpkZXZfaWQsCisJCQkJCXN0cnVjdCBwdF9yZWdzICpwdHJlZ3MpCit7CisJc3RydWN0IHNj c2lmcm9udF9pbmZvICppbmZvID0gKHN0cnVjdCBzY3NpZnJvbnRfaW5mbyAqKSBkZXZfaWQ7CisJ c3RydWN0IHNjc2lpZl9mcm9udF9yaW5nICpyaW5nID0gJmluZm8tPnJpbmc7CisJc3RydWN0IHNj c2lpZl9yZXNwb25zZSAqcmluZ19yZXM7CisKKwlzdHJ1Y3Qgc2NzaV9jbW5kICpzYzsKKwlpbnQg aSwgcnA7CisJdW5zaWduZWQgbG9uZyBpZDsKKworCWlmIChpbmZvLT5kZXYtPnN0YXRlICE9IFhl bmJ1c1N0YXRlQ29ubmVjdGVkKQorCQlyZXR1cm4gSVJRX0hBTkRMRUQ7CisKK2FnYWluOgorCXJw ID0gaW5mby0+cmluZy5zcmluZy0+cnNwX3Byb2Q7CisJcm1iKCk7CisKKwlmb3IgKGkgPSBpbmZv LT5yaW5nLnJzcF9jb25zOyBpICE9IHJwOyBpKyspIHsKKwkJcmluZ19yZXMgPSBSSU5HX0dFVF9S RVNQT05TRShyaW5nLCBpKTsKKworCQlpZCA9IHJpbmdfcmVzLT5ycWlkOworCQlzYyA9IChzdHJ1 Y3Qgc2NzaV9jbW5kICopaW5mby0+c2hhZG93W2lkXS5yZXFfc2NzaV9jbW5kOworCQlzY3NpZnJv bnRfY21kX2RvbmUoJmluZm8tPnNoYWRvd1tpZF0pOworCisJCUFERF9JRF9UT19GUkVFTElTVChp bmZvLCBpZCk7CisKKwkJc2MtPnJlc3VsdCA9IHJpbmdfcmVzLT5yZXN1bHQ7CisJCXNjLT5yZXNp ZCAgPSAwOworCisJCUJVR19PTihyaW5nX3Jlcy0+c2Vuc2VfbGVuID4gU0NTSV9TRU5TRV9CVUZG RVJTSVpFKTsKKworCQlpZiAocmluZ19yZXMtPnNlbnNlX2xlbikKKwkJCW1lbWNweShzYy0+c2Vu c2VfYnVmZmVyLCByaW5nX3Jlcy0+c2Vuc2VfYnVmZmVyLAorCQkJCXJpbmdfcmVzLT5zZW5zZV9s ZW4pOworCisJCXNjLT5zY3NpX2RvbmUoc2MpOworCX0KKworCWluZm8tPnJpbmcucnNwX2NvbnMg PSBpOworCWlmIChpICE9IGluZm8tPnJpbmcucmVxX3Byb2RfcHZ0KSB7CisJCWludCBtb3JlX3Rv X2RvOworCQlSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMocmluZywgbW9yZV90b19kbyk7 CisJCWlmIChtb3JlX3RvX2RvKQorCQkJZ290byBhZ2FpbjsKKwl9IGVsc2UKKwkJcmluZy0+c3Jp bmctPnJzcF9ldmVudCA9IGkgKyAxOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0 aWMgaW50IHNjc2lmcm9udF9hbGxvY19yaW5nKHN0cnVjdCBzY3NpZnJvbnRfaW5mbyAqaW5mbykK K3sKKwlzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2ID0gaW5mby0+ZGV2OworCXN0cnVjdCBzY3Np aWZfc3JpbmcgKnNyaW5nOworCWludCBlcnIgPSAtRU5PTUVNOworCisJaW5mby0+cmluZ19yZWYg PSBHUkFOVF9JTlZBTElEX1JFRjsKKworCXNyaW5nID0gKHN0cnVjdCBzY3NpaWZfc3JpbmcgKikg X19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOworCWlmICghc3JpbmcpIHsKKwkJeGVuYnVzX2Rl dl9mYXRhbChkZXYsIGVyciwgImZhaWwgdG8gYWxsb2NhdGUgc2hhcmVkIHJpbmciKTsKKwkJcmV0 dXJuIGVycjsKKwl9CisKKwlTSEFSRURfUklOR19JTklUKHNyaW5nKTsKKwlGUk9OVF9SSU5HX0lO SVQoJmluZm8tPnJpbmcsIHNyaW5nLCBQQUdFX1NJWkUpOworCURQUklOVEsoIjB4JXhcbiIsIFJJ TkdfU0laRSgmaW5mby0+cmluZykpOworCisJZXJyID0geGVuYnVzX2dyYW50X3JpbmcoZGV2LCB2 aXJ0X3RvX21mbihpbmZvLT5yaW5nLnNyaW5nKSk7CisJaWYgKGVyciA8IDApIHsKKwkJeGVuYnVz X2Rldl9mYXRhbChkZXYsIGVyciwgImZhaWwgdG8gZ3JhbnQgc2hhcmVkIHJpbmciKTsKKwkJZ290 byBmcmVlX3NyaW5nOworCX0KKwlpbmZvLT5yaW5nX3JlZiA9IGVycjsKKwllcnIgPSBiaW5kX2xp c3RlbmluZ19wb3J0X3RvX2lycWhhbmRsZXIoCisJCQlkZXYtPm90aGVyZW5kX2lkLCBzY3NpZnJv bnRfaW50ciwKKwkJCVNBX1NBTVBMRV9SQU5ET00sICJzY3NpZnJvbnQiLCBpbmZvKTsKKworCWlm IChlcnIgPD0gMCkgeworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAiYmluZF9saXN0ZW5p bmdfcG9ydF90b19pcnFoYW5kbGVyIik7CisJCWdvdG8gZmFpbDsKKwl9CisJaW5mby0+aXJxID0g ZXJyOworCisJcmV0dXJuIDA7CitmYWlsOgorCS8qIGZyZWUgcmVzb3VyY2UgKi8KK2ZyZWVfc3Jp bmc6CisJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKSBzcmluZyk7CisJc2NzaWZyb250X2ZyZWUo aW5mbyk7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHNjc2lmcm9udF9pbml0X3Jp bmcoc3RydWN0IHNjc2lmcm9udF9pbmZvICppbmZvKQoreworCXN0cnVjdCB4ZW5idXNfZGV2aWNl ICpkZXYgPSBpbmZvLT5kZXY7CisJc3RydWN0IHhlbmJ1c190cmFuc2FjdGlvbiB4YnQ7CisJaW50 IGVycjsKKworCURQUklOVEsoIiIpOworCisJZXJyID0gc2NzaWZyb250X2FsbG9jX3JpbmcoaW5m byk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKwlEUFJJTlRLKCIlbHUgJXVcbiIsIGluZm8t PnJpbmdfcmVmLCBpbmZvLT5ldnRjaG4pOworCithZ2FpbjoKKwllcnIgPSB4ZW5idXNfdHJhbnNh Y3Rpb25fc3RhcnQoJnhidCk7CisJaWYgKGVycikgeworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwg ZXJyLCAic3RhcnRpbmcgdHJhbnNhY3Rpb24iKTsKKwl9CisKKwllcnIgPSB4ZW5idXNfcHJpbnRm KHhidCwgZGV2LT5ub2RlbmFtZSwgInJpbmctcmVmIiwgIiVsdSIsCisJCQkJaW5mby0+cmluZ19y ZWYpOworCWlmIChlcnIpIHsKKwkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIGVyciwgIiVzIiwgIndy aXRpbmcgcmluZy1yZWYiKTsKKwkJZ290byBmYWlsOworCX0KKworI2lmZGVmIFhFTjMwMyAvKkZK Vk1JTyB4ZW4zLjAuNSovCisJZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9kZW5hbWUs ICJldmVudC1jaGFubmVsIiwgIiV1IiwKKwkJCQlpbmZvLT5ldnRjaG4pOworI2Vsc2UKKwllcnIg PSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFtZSwgImV2ZW50LWNoYW5uZWwiLCAiJXUi LAorCQkJCWlycV90b19ldnRjaG5fcG9ydChpbmZvLT5pcnEpKTsKKyNlbmRpZgorCWlmIChlcnIp IHsKKwkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIGVyciwgIiVzIiwgIndyaXRpbmcgZXZlbnQtY2hh bm5lbCIpOworCQlnb3RvIGZhaWw7CisJfQorCisJZXJyID0geGVuYnVzX3RyYW5zYWN0aW9uX2Vu ZCh4YnQsIDApOworCWlmIChlcnIpIHsKKwkJaWYgKGVyciA9PSAtRUFHQUlOKQorCQkJZ290byBh Z2FpbjsKKwkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIGVyciwgImNvbXBsZXRpbmcgdHJhbnNhY3Rp b24iKTsKKwl9IGVsc2UKKwkJeGVuYnVzX3N3aXRjaF9zdGF0ZShkZXYsIFhlbmJ1c1N0YXRlSW5p dGlhbGlzZWQpOworCisJcmV0dXJuIDA7CitmYWlsOgorCXhlbmJ1c190cmFuc2FjdGlvbl9lbmQo eGJ0LCAxKTsKKwkvKiBmcmVlIHJlc291cmNlICovCisJc2NzaWZyb250X2ZyZWUoaW5mbyk7CisJ CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgc2Nz aWZyb250X3NodCA9IHsKKwkubW9kdWxlCQkJPSBUSElTX01PRFVMRSwKKwkubmFtZQkJCT0gIlhl biBTQ1NJIGZyb250ZW5kIGRyaXZlciIsCisJLnF1ZXVlY29tbWFuZAkJPSBzY3NpZnJvbnRfcXVl dWVjb21tYW5kLAorCS5laF9hYm9ydF9oYW5kbGVyCT0gc2NzaWZyb250X2VoX2Fib3J0X2hhbmRs ZXIsCisJLmNtZF9wZXJfbHVuCQk9IENBTl9RVUVVRSwKKwkuY2FuX3F1ZXVlCQk9IENBTl9RVUVV RSwKKwkudGhpc19pZCAJCT0gLTEsCisJLnNnX3RhYmxlc2l6ZQkJPSBTR19UQUJMRVNJWkUsCisJ LnVzZV9jbHVzdGVyaW5nCQk9IERJU0FCTEVfQ0xVU1RFUklORywKKwkucHJvY19uYW1lCQk9ICJz Y3NpZnJvbnQiLAorfTsKKworc3RhdGljIGludCBzY3NpZnJvbnRfY29ubmVjdChzdHJ1Y3Qgc2Nz aWZyb250X2luZm8gKmluZm8pCit7CisJc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiA9IGluZm8t PmRldjsKKwlzdHJ1Y3QgU2NzaV9Ib3N0ICpob3N0ID0gaW5mby0+aG9zdDsKKwlpbnQgZXJyID0g LUVOT01FTTsKKworCURQUklOVEsoIiV1XG4iLCBkZXYtPnN0YXRlKTsKKwlpZiAoZGV2LT5zdGF0 ZSA9PSBYZW5idXNTdGF0ZUNvbm5lY3RlZCkKKwkJcmV0dXJuIDA7CisKKwl4ZW5idXNfc3dpdGNo X3N0YXRlKGRldiwgWGVuYnVzU3RhdGVDb25uZWN0ZWQpOworCisJLyogRklYTUUgKi8KKwlob3N0 LT5tYXhfaWQgICAgICA9IDE7CisJaG9zdC0+bWF4X2NoYW5uZWwgPSAwOworCisJZXJyID0gc2Nz aV9hZGRfaG9zdChob3N0LCAmZGV2LT5kZXYpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKCJmYWls IHRvIGFkZCBzY3NpIGhvc3QgJWRcbiIsIGVycik7CisJCXJldHVybiBlcnI7CisJfQorCisJc2Nz aV9zY2FuX2hvc3QoaG9zdCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzY3NpZnJv bnRfcHJvYmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKKwkJCQljb25zdCBzdHJ1Y3QgeGVu YnVzX2RldmljZV9pZCAqaWQpCit7CisJc3RydWN0IFNjc2lfSG9zdCAqaG9zdDsKKwlzdHJ1Y3Qg c2NzaWZyb250X2luZm8gKmluZm87CisJaW50IGksIGVyciA9IC1FTk9NRU07CisKKwlob3N0ID0g c2NzaV9ob3N0X2FsbG9jKCZzY3NpZnJvbnRfc2h0LCBzaXplb2YoKmluZm8pKTsKKwlpZiAoIWhv c3QpIHsKKwkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIGVyciwgImZhaWwgdG8gYWxsb2NhdGUgc2Nz aSBob3N0Iik7CisJCXJldHVybiBlcnI7CisJfQorCWluZm8gPSAoc3RydWN0IHNjc2lmcm9udF9p bmZvICopIGhvc3QtPmhvc3RkYXRhOworCWRldi0+ZGV2LmRyaXZlcl9kYXRhID0gaW5mbzsKKwlp bmZvLT5kZXYgID0gZGV2OworCWluZm8tPmhvc3QgPSBob3N0OworCisJZm9yIChpID0gMDsgaSA8 IFNDU0lfUklOR19TSVpFOyBpKyspCisJCWluZm8tPnNoYWRvd1tpXS5yaW5nX3JlcS5ycWlkID0g aSArIDE7CisJaW5mby0+c2hhZG93W1NDU0lfUklOR19TSVpFIC0gMV0ucmluZ19yZXEucnFpZCA9 IDB4MGZmZmZmZmY7CisKKwllcnIgPSBzY3NpZnJvbnRfaW5pdF9yaW5nKGluZm8pOworCWlmIChl cnIpIHsKKwkJc2NzaV9ob3N0X3B1dChob3N0KTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKworCitzdGF0aWMgaW50IHNjc2lmcm9udF9yZW1vdmUoc3RydWN0IHhlbmJ1c19k ZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qgc2NzaWZyb250X2luZm8gKmluZm8gPSBkZXYtPmRldi5k cml2ZXJfZGF0YTsKKworCXNjc2lmcm9udF9mcmVlKGluZm8pOworCQorCXJldHVybiAwOworfQor CitzdGF0aWMgdm9pZCBzY3NpZnJvbnRfYmFja2VuZF9jaGFuZ2VkKHN0cnVjdCB4ZW5idXNfZGV2 aWNlICpkZXYsCisJCQkJCVhlbmJ1c1N0YXRlIGJhY2tlbmRfc3RhdGUpCit7CisJc3RydWN0IHNj c2lmcm9udF9pbmZvICppbmZvID0gZGV2LT5kZXYuZHJpdmVyX2RhdGE7CisKKwlEUFJJTlRLKCIl cCAldSAldVxuIiwgZGV2LCBkZXYtPnN0YXRlLCBiYWNrZW5kX3N0YXRlKTsKKworCXN3aXRjaCAo YmFja2VuZF9zdGF0ZSkgeworCWNhc2UgWGVuYnVzU3RhdGVVbmtub3duOgorCWNhc2UgWGVuYnVz U3RhdGVJbml0aWFsaXNpbmc6CisJY2FzZSBYZW5idXNTdGF0ZUluaXRXYWl0OgorCWNhc2UgWGVu YnVzU3RhdGVJbml0aWFsaXNlZDoKKwljYXNlIFhlbmJ1c1N0YXRlQ2xvc2VkOgorCQlicmVhazsK KworCWNhc2UgWGVuYnVzU3RhdGVDb25uZWN0ZWQ6CisJCXNjc2lmcm9udF9jb25uZWN0KGluZm8p OworCQlicmVhazsKKworCWNhc2UgWGVuYnVzU3RhdGVDbG9zaW5nOgorCQlicmVhazsKKwl9Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgeGVuYnVzX2RldmljZV9pZCBzY3NpZnJvbnRfaWRzW10gPSB7CisJ eyAic2NzaWhvc3QiIH0sCisJeyAiIiB9Cit9OworCisKK3N0YXRpYyBzdHJ1Y3QgeGVuYnVzX2Ry aXZlciBzY3NpZnJvbnRfZHJpdmVyID0geworCS5uYW1lCQkJPSAic2NzaWhvc3QiLAorCS5vd25l cgkJCT0gVEhJU19NT0RVTEUsCisJLmlkcwkJCT0gc2NzaWZyb250X2lkcywKKwkucHJvYmUJCQk9 IHNjc2lmcm9udF9wcm9iZSwKKwkucmVtb3ZlCQkJPSBzY3NpZnJvbnRfcmVtb3ZlLAorLyogCS5y ZXN1bWUJCQk9IHNjc2lmcm9udF9yZXN1bWUsICovCisJLm90aGVyZW5kX2NoYW5nZWQJPSBzY3Np ZnJvbnRfYmFja2VuZF9jaGFuZ2VkLAorfTsKKworc3RhdGljIGludCBfX2luaXQgc2NzaWZyb250 X2luaXQodm9pZCkKK3sKKwlpbnQgZXJyOworCisJaWYgKCFpc19ydW5uaW5nX29uX3hlbigpKQor CQlyZXR1cm4gLUVOT0RFVjsKKworCWVyciA9IHhlbmJ1c19yZWdpc3Rlcl9mcm9udGVuZCgmc2Nz aWZyb250X2RyaXZlcik7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBzY3NpZnJv bnRfZXhpdCh2b2lkKQoreworCXhlbmJ1c191bnJlZ2lzdGVyX2RyaXZlcigmc2NzaWZyb250X2Ry aXZlcik7Cit9CisKK21vZHVsZV9pbml0KHNjc2lmcm9udF9pbml0KTsKK21vZHVsZV9leGl0KHNj c2lmcm9udF9leGl0KTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJYZW4gU0NTSSBmcm9udGVuZCBk cml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsK --------_4684E7D56BA004902400_MULTIPART_MIXED_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------_4684E7D56BA004902400_MULTIPART_MIXED_--