From mboxrd@z Thu Jan 1 00:00:00 1970 From: matthieu castet Subject: Re: [RFC] mass storage : emulation of sat scsi_pass_thru with ATACB Date: Fri, 29 Feb 2008 22:30:14 +0100 Message-ID: <47C87966.6070106@free.fr> References: <47C332E3.2070705@free.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030404010505060508000103" Return-path: In-Reply-To: <47C332E3.2070705-GANU6spQydw@public.gmane.org> Sender: linux-usb-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Alan Stern List-Id: linux-scsi@vger.kernel.org This is a multi-part message in MIME format. --------------030404010505060508000103 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit matthieu castet wrote: > Hi, > > I have got a cypress usb-ide bridge and I would like to tune or monitor > my disk with tools like hdparm, hddtemp or smartctl. > > My controller support a way to send raw ATA command to the disk with > something call atacb (see > http://download.cypress.com.edgesuite.net/design_resources/datasheets/contents/cy7c68300c_8.pdf). > > > First I start to add support for atacb in applications like smartctl. > But there is some disadvantages : > - I need to patch all application > - A race is possible if there other accesses, because the emulation can > be split in 2 atacb scsi transactions. One for sending the command, one > for reading the register (if ck_cond is set). > > So the idea to implement a SAT emulation for such device came to my mind. > > First I want to ask, are there usb mass storage device that support SAT ? > After some reading it seems impossible. Mass storage transparent scsi > requires spc2 that only support fixed sense (starting with 0x70 or 0x71). > But SAT need a sense with descriptor defined in spc3 (starting with 0x72 > or 0x73). > > So SAT is not compatible with the sense format of mass storage ? > > > > For doing the emulation, I want to provide a special proto_handler. > > But I don't know what the best way to send command in my emulation layer : > should I use usb_stor_invoke_transport or directly use us->transport. > using usb_stor_invoke_transport save me lot's trouble of implementing > error handling, but I can't control what I do. > > What should I do if I got an error after sending the first command and > ck_cond is set ? Should I still try to read the register ? > > Is it safe to try to read the register if the first command did > autosense ? Or should I only send the command, and read the register and > compute the sense key, asc and ascq from registers ? > > For the moment, my "draft" code look something like [1]. > > Any comments ? > I attach a updated version of the driver. I register the handler with an unsual entry. I don't know if it is the best way to do that (we need an entry for each device supporting atacb). Another solution could have been to put the emulation in usb_stor_transparent_scsi_command, and if the device report invalidCDB don't try to use it again. Any comments ? Matthieu --------------030404010505060508000103 Content-Type: text/plain; name="mass_storage_atacb_emulate_sat" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="mass_storage_atacb_emulate_sat" SW5kZXg6IGxpbnV4LTIuNi4yNC4yL2RyaXZlcnMvdXNiL3N0b3JhZ2UvcHJvdG9jb2wuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMjQuMi5vcmlnL2RyaXZlcnMvdXNiL3N0b3Jh Z2UvcHJvdG9jb2wuYwkyMDA4LTAyLTI5IDIyOjE0OjA5LjAwMDAwMDAwMCArMDEwMAorKysg bGludXgtMi42LjI0LjIvZHJpdmVycy91c2Ivc3RvcmFnZS9wcm90b2NvbC5jCTIwMDgtMDIt MjkgMjI6MTg6MDIuMDAwMDAwMDAwICswMTAwCkBAIC00Nyw2ICs0Nyw4IEBACiAjaW5jbHVk ZSA8bGludXgvaGlnaG1lbS5oPgogI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgogI2luY2x1ZGUg PHNjc2kvc2NzaV9jbW5kLmg+CisjaW5jbHVkZSA8c2NzaS9zY3NpX2VoLmg+CisjaW5jbHVk ZSA8bGludXgvYXRhLmg+CiAKICNpbmNsdWRlICJ1c2IuaCIKICNpbmNsdWRlICJwcm90b2Nv bC5oIgpAQCAtMTQ0LDYgKzE0NiwxNzkgQEAKIAl1c2Jfc3Rvcl9pbnZva2VfdHJhbnNwb3J0 KHNyYiwgdXMpOwogfQogCitzdGF0aWMgdm9pZCBlbXVsYXRlX3Bhc3NfdGhydV93aXRoX2F0 YWNiKHN0cnVjdCBzY3NpX2NtbmQgKnNyYiwKKwkJCQkgICAgICAgc3RydWN0IHVzX2RhdGEg KnVzKQoreworCXVuc2lnbmVkIGNoYXIgc2F2ZV9jbW5kW01BWF9DT01NQU5EX1NJWkVdOwor CW1lbWNweShzYXZlX2NtbmQsIHNyYi0+Y21uZCwgc2l6ZW9mKHNhdmVfY21uZCkpOworCW1l bXNldChzcmItPmNtbmQsIDAsIHNpemVvZihzcmItPmNtbmQpKTsKKworCS8qIGNoZWNrIGlm IHdlIHN1cHBvcnQgdGhlIGNvbW1hbmQgKi8KKwlpZiAoc2F2ZV9jbW5kWzFdID4+IDUpIC8q IE1VTFRJUExFX0NPVU5UICovCisJCWdvdG8gaW52YWxpZF9mbGQ7CisJLyogY2hlY2sgcHJv dG9jb2wgKi8KKwlzd2l0Y2goKHNhdmVfY21uZFsxXSA+PiAxKSAmIDB4ZikgeworCQljYXNl IDM6CisJCWNhc2UgNDoKKwkJY2FzZSA1OgorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQln b3RvIGludmFsaWRfZmxkOworCX0KKworCS8qIGZpcnN0IGJ1aWxkIHRoZSBBVEFDQiBjb21t YW5kICovCisJc3JiLT5jbWRfbGVuID0gMTY7CisKKwlzcmItPmNtbmRbMF0gPSAweDI0OyAv KiBYWFggdGhpcyB2YWx1ZSBjYW4gY2hhbmdlICovCisJc3JiLT5jbW5kWzFdID0gMHgyNDsK KwlzcmItPmNtbmRbMl0gPSAwOworCisJc3JiLT5jbW5kWzNdID0gMHhmZiAtIDE7CisJc3Ji LT5jbW5kWzRdID0gMTsKKworCWlmIChzYXZlX2NtbmRbMF0gPT0gQVRBXzE2KSB7CisJCXNy Yi0+Y21uZFs2XSA9IHNhdmVfY21uZFs0XTsgLyogZmVhdHVyZXMgKi8KKwkJc3JiLT5jbW5k WzddID0gc2F2ZV9jbW5kWzZdOyAvKiBzZWN0b3IgY291bnQgKi8KKwkJc3JiLT5jbW5kWzhd ID0gc2F2ZV9jbW5kWzhdOyAvKiBsYmEgbG93ICovCisJCXNyYi0+Y21uZFs5XSA9IHNhdmVf Y21uZFsxMF07IC8qIGxiYSBtZWQgKi8KKwkJc3JiLT5jbW5kWzEwXSA9IHNhdmVfY21uZFsx Ml07IC8qIGxiYSBoaWdoICovCisJCXNyYi0+Y21uZFsxMV0gPSBzYXZlX2NtbmRbMTNdOyAv KiBkZXZpY2UgKi8KKwkJc3JiLT5jbW5kWzEyXSA9IHNhdmVfY21uZFsxNF07IC8qIGNvbW1h bmQgKi8KKworCQlpZiAoc2F2ZV9jbW5kWzFdICYgMHgwMSkgey8qIGV4dGVuZGVkIGJpdCBz ZXQgKi8KKwkJCWlmIChzYXZlX2NtbmRbM10gfHwgc2F2ZV9jbW5kWzVdIHx8IHNhdmVfY21u ZFs3XSB8fCBzYXZlX2NtbmRbOV0KKwkJCQkJfHwgc2F2ZV9jbW5kWzExXSkKKwkJCQlnb3Rv IGludmFsaWRfZmxkOworCQl9CisJfQorCWVsc2UgeyAvKiBBVEExMiAqLworCQlzcmItPmNt bmRbNl0gPSBzYXZlX2NtbmRbM107IC8qIGZlYXR1cmVzICovCisJCXNyYi0+Y21uZFs3XSA9 IHNhdmVfY21uZFs0XTsgLyogc2VjdG9yIGNvdW50ICovCisJCXNyYi0+Y21uZFs4XSA9IHNh dmVfY21uZFs1XTsgLyogbGJhIGxvdyAqLworCQlzcmItPmNtbmRbOV0gPSBzYXZlX2NtbmRb Nl07IC8qIGxiYSBtZWQgKi8KKwkJc3JiLT5jbW5kWzEwXSA9IHNhdmVfY21uZFs3XTsgLyog bGJhIGhpZ2ggKi8KKwkJc3JiLT5jbW5kWzExXSA9IHNhdmVfY21uZFs4XTsgLyogZGV2aWNl ICovCisJCXNyYi0+Y21uZFsxMl0gPSBzYXZlX2NtbmRbOV07IC8qIGNvbW1hbmQgKi8KKwor CX0KKwkvKiBGaWx0ZXIgU0VUX0ZFQVRVUkVTIC0gWEZFUiBNT0RFIGNvbW1hbmQgKi8KKwlp ZiAoKHNyYi0+Y21uZFsxMl0gPT0gQVRBX0NNRF9TRVRfRkVBVFVSRVMpCisJCQkmJiAoc3Ji LT5jbW5kWzZdID09IFNFVEZFQVRVUkVTX1hGRVIpKQorCQlnb3RvIGludmFsaWRfZmxkOwor CisJLyogcmVhbHkgbmVlZGVkID8gaXNkMjAwIGRvbid0IGRvIHRoYXQgKi8KKwlpZiAoc3Ji LT5jbW5kWzEyXSA9PSBBVEFfQ01EX0lEX0FUQSB8fCBzcmItPmNtbmRbMTJdID09IEFUQV9D TURfSURfQVRBUEkpCisJCXNyYi0+Y21uZFsyXSB8PSAoMTw8Nyk7CisKKworCXVzYl9zdG9y X2ludm9rZV90cmFuc3BvcnQoc3JiLCB1cyk7CisKKwkvKiBpZiB0aGUgZGV2aWNlIGRvZXNu J3Qgc3VwcG9ydCBBVEFDQgorCSAqIGFib3J0IGFuZCByZWdpc3RlciB1c2Jfc3Rvcl90cmFu c3BhcmVudF9zY3NpX2NvbW1hbmQKKwkgKiBjYWxsYmFjaworCSAqLworCWlmIChzcmItPnJl c3VsdCA9PSBTQU1fU1RBVF9DSEVDS19DT05ESVRJT04gJiYKKwkJCW1lbWNtcChzcmItPnNl bnNlX2J1ZmZlciwgdXNiX3N0b3Jfc2Vuc2VfaW52YWxpZENEQiwKKwkJCQlzaXplb2YodXNi X3N0b3Jfc2Vuc2VfaW52YWxpZENEQikpID09IDApIHsKKwkJdXMtPnByb3RvX2hhbmRsZXIg PSB1c2Jfc3Rvcl90cmFuc3BhcmVudF9zY3NpX2NvbW1hbmQ7CisJCWdvdG8gZW5kOworCX0K KworCWlmICgoc3JiLT5yZXN1bHQgIT0gKERJRF9FUlJPUiA8PCAxNikgJiYKKwkJCQlzcmIt PnJlc3VsdCAhPSAoRElEX0FCT1JUIDw8IDE2KSkgJiYKKwkJCXNhdmVfY21uZFsyXSAmIDB4 MjApIHsgLyogY2tfY29uZCAqLworCQkvKiByZWFkIHJlZ3MgYW5kIHB1dCB0aGVtIGluIHNl bnNlICovCisJCXN0cnVjdCBzY3NpX2VoX3NhdmUgc2VzOworCQl1bnNpZ25lZCBjaGFyIHNr LCBhc2MsIGFzY3E7CisJCXVuc2lnbmVkIGNoYXIgcmVnc1s4XTsKKwkJdW5zaWduZWQgY2hh ciAqc2IgPSBzcmItPnNlbnNlX2J1ZmZlcjsKKwkJdW5zaWduZWQgY2hhciAqZGVzYyA9IHNi ICsgODsKKwkJaW50IHRtcF9yZXN1bHQ7CisKKwkJaWYgKHNyYi0+cmVzdWx0ID09IFNBTV9T VEFUX0dPT0QpIHsKKwkJCS8qIE9LICovCisJCQlzayA9IFJFQ09WRVJFRF9FUlJPUjsKKwkJ CWFzYyA9IDA7IC8qIEFUQSBQQVNTIFRIUk9VR0ggSU5GT1JNQVRJT04gQVZBSUxBQkxFICov CisJCQlhc2NxID0gMHgxRDsKKwkJfQorCQllbHNlIHsKKwkJCS8qIHNhdmUgc2Vuc2UgaW5m byAqLworCQkJLyogWFhYIHdlIGdldCBvbmx5IDAsIHdlIHNob3VsZCB1c2UgcmVncyBzdGF0 dXMgYW5kIGVycm9yCisJCQkgKi8KKyNpZiAwCisJCQlzayA9IHNiWzJdOworCQkJYXNjID0g c2JbMTJdOworCQkJYXNjcSA9IHNiWzEzXTsKKyNlbHNlCisJCQlzayA9IElMTEVHQUxfUkVR VUVTVDsKKwkJCWFzYyA9IDB4MjQ7CisJCQlhc2NxID0gMDsKKyNlbmRpZgorCQl9CisKKwor CQkvKiByZWFkIHJlZ2lzdGVycyAqLworCQlzcmItPmNtbmRbMl0gPSAxOworCQlzY3NpX2Vo X3ByZXBfY21uZChzcmIsICZzZXMsIE5VTEwsIDAsIDApOworCQlzcmItPnJlcXVlc3RfYnVm ZmVyID0gcmVnczsKKwkJc3JiLT5yZXF1ZXN0X2J1ZmZsZW4gPSBzaXplb2YocmVncyk7CisJ CXNyYi0+c2NfZGF0YV9kaXJlY3Rpb24gPSBETUFfRlJPTV9ERVZJQ0U7CisKKwkJdXNiX3N0 b3JfaW52b2tlX3RyYW5zcG9ydChzcmIsIHVzKTsKKwkJdG1wX3Jlc3VsdCA9IHNyYi0+cmVz dWx0OworCQlzY3NpX2VoX3Jlc3RvcmVfY21uZChzcmIsICZzZXMpOworCQkvKiB3ZSBmYWls IHRvIGdldCByZWdpc3RlcnMsIHJlcG9ydCBpbnZhbGlkIGNvbW1hbmQgKi8KKwkJaWYgKHRt cF9yZXN1bHQgIT0gU0FNX1NUQVRfR09PRCkKKwkJCWdvdG8gaW52YWxpZF9mbGQ7CisKKwkJ LyogYnVpbGQgdGhlIHNlbnNlICovCisJCW1lbXNldChzYiwgMCwgc2l6ZW9mKHNyYi0+c2Vu c2VfYnVmZmVyKSk7CisJCS8qIFhYWCB3ZSBzaG91bGQgZ2VuZXJhdGUgc2ssIGFzYywgYXNj cSBmcm9tIHN0YXR1cyBhbmQgZXJyb3IKKwkJICogcmVncworCQkgKiAoc2VlIDExLjEgRXJy b3IgdHJhbnNsYXRpb24grSBBVEEgZGV2aWNlIGVycm9yIHRvIFNDU0kgZXJyb3IgbWFwKQor CQkgKi8KKwkJc2JbMV0gPSBzazsKKwkJc2JbMl0gPSBhc2M7CisJCXNiWzNdID0gYXNjcTsK KwkJc2JbMF0gPSAweDcyOworCQlkZXNjWzBdID0gMHgwOTsgLyogQVRBX1JFVFVSTl9ERVND UklQVE9SICovCisKKwkJc2JbN10gPSAxNDsKKwkJZGVzY1sxXSA9IDEyOworCisJCWRlc2Nb Ml0gPSAweDAwOworCQlkZXNjWzNdID0gcmVnc1sxXTsKKwkJZGVzY1s1XSA9IHJlZ3NbMl07 CisJCWRlc2NbN10gPSByZWdzWzNdOworCQlkZXNjWzldID0gcmVnc1s0XTsKKwkJZGVzY1sx MV0gPSByZWdzWzVdOworCQlkZXNjWzEyXSA9IHJlZ3NbNl07CisJCWRlc2NbMTNdID0gcmVn c1s3XTsKKworCQlzcmItPnJlc3VsdCA9IChEUklWRVJfU0VOU0UgPDwgMjQpIHwgU0FNX1NU QVRfQ0hFQ0tfQ09ORElUSU9OOworCX0KKwlnb3RvIGVuZDsKK2ludmFsaWRfZmxkOgorCXNy Yi0+cmVzdWx0ID0gKERSSVZFUl9TRU5TRSA8PCAyNCkgfCBTQU1fU1RBVF9DSEVDS19DT05E SVRJT047CisKKwltZW1jcHkoc3JiLT5zZW5zZV9idWZmZXIsCisJCQl1c2Jfc3Rvcl9zZW5z ZV9pbnZhbGlkQ0RCLAorCQkJc2l6ZW9mKHVzYl9zdG9yX3NlbnNlX2ludmFsaWRDREIpKTsK K2VuZDoKKwltZW1jcHkoc3JiLT5jbW5kLCBzYXZlX2NtbmQsIHNpemVvZihzYXZlX2NtbmQp KTsKKwlpZiAoc3JiLT5jbW5kWzBdID09IEFUQV8xMikKKwkJc3JiLT5jbWRfbGVuID0gMTI7 Cit9CisKK3ZvaWQgdXNiX3N0b3JfdHJhbnNwYXJlbnRfc2NzaV9jb21tYW5kX2F0YWNiKHN0 cnVjdCBzY3NpX2NtbmQgKnNyYiwKKwkJCQkgICAgICAgc3RydWN0IHVzX2RhdGEgKnVzKQor eworCWlmIChzcmItPmNtbmRbMF0gIT0gQVRBXzE2ICYmIHNyYi0+Y21uZFswXSAhPSBBVEFf MTIpCisJCXVzYl9zdG9yX2ludm9rZV90cmFuc3BvcnQoc3JiLCB1cyk7CisJZWxzZQorCQll bXVsYXRlX3Bhc3NfdGhydV93aXRoX2F0YWNiKHNyYiwgdXMpOworfQorCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKICAqIFNjYXR0ZXItZ2F0aGVyIHRyYW5zZmVyIGJ1ZmZlciBhY2Nlc3Mgcm91 dGluZXMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KSW5kZXg6IGxpbnV4LTIuNi4yNC4yL2RyaXZl cnMvdXNiL3N0b3JhZ2UvaW5pdGlhbGl6ZXJzLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGludXgt Mi42LjI0LjIub3JpZy9kcml2ZXJzL3VzYi9zdG9yYWdlL2luaXRpYWxpemVycy5jCTIwMDgt MDItMjkgMjI6MTQ6MDkuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuMjQuMi9kcml2 ZXJzL3VzYi9zdG9yYWdlL2luaXRpYWxpemVycy5jCTIwMDgtMDItMjkgMjI6MTY6MDMuMDAw MDAwMDAwICswMTAwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiaW5pdGlhbGl6ZXJz LmgiCiAjaW5jbHVkZSAiZGVidWcuaCIKICNpbmNsdWRlICJ0cmFuc3BvcnQuaCIKKyNpbmNs dWRlICJwcm90b2NvbC5oIgogCiAvKiBUaGlzIHBsYWNlcyB0aGUgU2h1dHRsZS9TQ00gVVNC PC0+U0NTSSBicmlkZ2UgZGV2aWNlcyBpbiBtdWx0aS10YXJnZXQKICAqIG1vZGUgKi8KQEAg LTEwNCwzICsxMDUsMTMgQEAKIAlVU19ERUJVR1AoInVzYl9jb250cm9sX21zZyBwZXJmb3Jt aW5nIHJlc3VsdCBpcyAlZFxuIiwgcmVzdWx0KTsKIAlyZXR1cm4gKHJlc3VsdCA/IDAgOiAt MSk7CiB9CisKKy8qIFRoaXMgcGxhY2VzIHJlZ2lzdGVyIHRoZSBhdGFjYiBwcm90byBjYWxs YmFjayAqLworaW50IHVzYl9hdGFjYl9pbml0KHN0cnVjdCB1c19kYXRhICp1cykKK3sKKwkv KiBYWFggZ2V0IGF0YWNiIGNvbW1hbmQgZnJvbSBlZXByb20KKwkgKiBBVE0gd2UgYXNzdW1l IHRoZSBkZWZhdWx0IDogMHgyNAorCSAqLworCXVzLT5wcm90b19oYW5kbGVyID0gdXNiX3N0 b3JfdHJhbnNwYXJlbnRfc2NzaV9jb21tYW5kX2F0YWNiOworCXJldHVybiAwOworfQpJbmRl eDogbGludXgtMi42LjI0LjIvZHJpdmVycy91c2Ivc3RvcmFnZS9pbml0aWFsaXplcnMuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYuMjQuMi5vcmlnL2RyaXZlcnMvdXNiL3N0b3Jh Z2UvaW5pdGlhbGl6ZXJzLmgJMjAwOC0wMi0yOSAyMjoxNDowOS4wMDAwMDAwMDAgKzAxMDAK KysrIGxpbnV4LTIuNi4yNC4yL2RyaXZlcnMvdXNiL3N0b3JhZ2UvaW5pdGlhbGl6ZXJzLmgJ MjAwOC0wMi0yOSAyMjoxNjowMy4wMDAwMDAwMDAgKzAxMDAKQEAgLTUwLDMgKzUwLDYgQEAK IAogLyogVGhpcyBwbGFjZXMgdGhlIEhVQVdFSSBFMjIwIGRldmljZXMgaW4gbXVsdGktcG9y dCBtb2RlICovCiBpbnQgdXNiX3N0b3JfaHVhd2VpX2UyMjBfaW5pdChzdHJ1Y3QgdXNfZGF0 YSAqdXMpOworCisvKiBUaGlzIHBsYWNlcyByZWdpc3RlciB0aGUgYXRhY2IgcHJvdG8gY2Fs bGJhY2sgKi8KK2ludCB1c2JfYXRhY2JfaW5pdChzdHJ1Y3QgdXNfZGF0YSAqdXMpOwpJbmRl eDogbGludXgtMi42LjI0LjIvZHJpdmVycy91c2Ivc3RvcmFnZS9wcm90b2NvbC5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGxpbnV4LTIuNi4yNC4yLm9yaWcvZHJpdmVycy91c2Ivc3RvcmFnZS9w cm90b2NvbC5oCTIwMDgtMDItMjkgMjI6MTQ6MDkuMDAwMDAwMDAwICswMTAwCisrKyBsaW51 eC0yLjYuMjQuMi9kcml2ZXJzL3VzYi9zdG9yYWdlL3Byb3RvY29sLmgJMjAwOC0wMi0yOSAy MjoxNjowMy4wMDAwMDAwMDAgKzAxMDAKQEAgLTQ3LDYgKzQ3LDggQEAKIGV4dGVybiB2b2lk IHVzYl9zdG9yX3VmaV9jb21tYW5kKHN0cnVjdCBzY3NpX2NtbmQqLCBzdHJ1Y3QgdXNfZGF0 YSopOwogZXh0ZXJuIHZvaWQgdXNiX3N0b3JfdHJhbnNwYXJlbnRfc2NzaV9jb21tYW5kKHN0 cnVjdCBzY3NpX2NtbmQqLAogCQlzdHJ1Y3QgdXNfZGF0YSopOworZXh0ZXJuIHZvaWQgdXNi X3N0b3JfdHJhbnNwYXJlbnRfc2NzaV9jb21tYW5kX2F0YWNiKHN0cnVjdCBzY3NpX2NtbmQq LAorCQlzdHJ1Y3QgdXNfZGF0YSopOwogCiAvKiBzdHJ1Y3Qgc2NzaV9jbW5kIHRyYW5zZmVy IGJ1ZmZlciBhY2Nlc3MgdXRpbGl0aWVzICovCiBlbnVtIHhmZXJfYnVmX2Rpcgl7VE9fWEZF Ul9CVUYsIEZST01fWEZFUl9CVUZ9OwpJbmRleDogbGludXgtMi42LjI0LjIvZHJpdmVycy91 c2Ivc3RvcmFnZS91bnVzdWFsX2RldnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYu MjQuMi5vcmlnL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdW51c3VhbF9kZXZzLmgJMjAwOC0wMi0y OSAyMjoxNDowOS4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi4yNC4yL2RyaXZlcnMv dXNiL3N0b3JhZ2UvdW51c3VhbF9kZXZzLmgJMjAwOC0wMi0yOSAyMjoxNjowMy4wMDAwMDAw MDAgKzAxMDAKQEAgLTE1ODgsNiArMTU4OCwxMiBAQAogCQlVU19TQ19ERVZJQ0UsIFVTX1BS X0RFVklDRSwgTlVMTCwKIAkJVVNfRkxfQ0FQQUNJVFlfSEVVUklTVElDUyksCiAKK1VOVVNV QUxfREVWKCAgMHgwNGI0LCAweDY4MzAsIDB4MDAwMCwgMHg5OTk5LAorCQkiQ3lwcmVzcyIs CisJCSJDeXByZXNzIEFUMkxQIiwKKwkJVVNfU0NfU0NTSSwgVVNfUFJfQlVMSywgdXNiX2F0 YWNiX2luaXQsCisJCVVTX0ZMX05FRURfT1ZFUlJJREUpLAorCiAvKiBDb250cm9sL0J1bGsg dHJhbnNwb3J0IGZvciBhbGwgU3ViQ2xhc3MgdmFsdWVzICovCiBVU1VBTF9ERVYoVVNfU0Nf UkJDLCBVU19QUl9DQiwgVVNCX1VTX1RZUEVfU1RPUiksCiBVU1VBTF9ERVYoVVNfU0NfODAy MCwgVVNfUFJfQ0IsIFVTQl9VU19UWVBFX1NUT1IpLAo= --------------030404010505060508000103-- -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html