From nobody Sat May 10 14:11:15 2025 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) client-ip=80.81.252.135; envelope-from=seabios-bounces@seabios.org; helo=mail.coreboot.org; Authentication-Results: mx.zoho.com; dkim=fail spf=none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) smtp.mailfrom=seabios-bounces@seabios.org; Return-Path: Received: from mail.coreboot.org (mail.coreboot.org [80.81.252.135]) by mx.zohomail.com with SMTPS id 1493216357625224.3697779948776; Wed, 26 Apr 2017 07:19:17 -0700 (PDT) Received: from [127.0.0.1] (helo=ra.coresystems.de) by mail.coreboot.org with esmtp (Exim 4.86_2) (envelope-from ) id 1d3NmX-0003Dp-BW; Wed, 26 Apr 2017 16:19:01 +0200 Received: from mail-ve1eur01on0129.outbound.protection.outlook.com ([104.47.1.129] helo=EUR01-VE1-obe.outbound.protection.outlook.com) by mail.coreboot.org with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) (Exim 4.86_2) (envelope-from ) id 1d3NmN-00035K-QT for seabios@seabios.org; Wed, 26 Apr 2017 16:18:59 +0200 Received: from rkaganb.sw.ru (195.214.232.6) by VI1PR08MB0845.eurprd08.prod.outlook.com (10.164.93.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1047.13; Wed, 26 Apr 2017 14:18:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=dpWyIVFmCgL1UzOnTiZTO5zjfIjForrWHZPkS0Vv4TU=; b=Bizx7BEhxyioqg7VuHuU0hXsYO14ckVYWCO8rsRjK9NR+QByIwNPwDNPn/iANq1c3yEi9teQdWbK03jRyMsEMSAepwt23DDu50OyvNujWCpPal/LtktaysWWALorDZeljpYLuYeDIsp/rpn29vUOgbM58NOghY8M7Uan8MZlenQ= Authentication-Results: seabios.org; dkim=none (message not signed) header.d=none;seabios.org; dmarc=none action=none header.from=virtuozzo.com; From: Roman Kagan To: , Kevin O'Connor Date: Wed, 26 Apr 2017 17:18:05 +0300 Message-ID: <20170426141809.12661-6-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170426141809.12661-1-rkagan@virtuozzo.com> References: <20170426141809.12661-1-rkagan@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR0802CA0047.eurprd08.prod.outlook.com (10.172.252.161) To VI1PR08MB0845.eurprd08.prod.outlook.com (10.164.93.143) X-MS-Office365-Filtering-Correlation-Id: e77a575d-96be-4d31-6b4e-08d48caf17db X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR08MB0845; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 3:WR7I2AAZ6X9ZUPNkC05LHjH+hgRCdOUYewDPHF6BcZxWTB81oCks/vpoLNiQsTj0tE80P/QdFkTYEObmlT6hxqqcg6nxDOvWsIUK7a2od0YYve2Yewgrpx23pqGhFKagjwgV9ZLfLJcYzvEcuyCTqiG6pCX3EQtiPigFL/eowakc0u8i8re62gvq9IYtz5+wKVjpHxKFLPHkCPhGBpsdxlIlbVDZ1uPwJPmrT+U/GRYh7/mot3PB38EmhMz0zguHYkp1QpQhY41KGyPIV3yzv+Pcf5AritkQKMP3HRo7gp5W28pEiixTI6vMa0SBf1QmpfHBUQWXojHscNNMvHyQ1g==; 25:MRNBu1PVH4rsdBRJjUuKTM2w5WbJJR2+uNWfyIhcAuf0AAA0M+tm+KbhniuFK6qM0hDkBJSnNwP8TMUkk0dpENzxfcwGfj9maJW5BqV/SAWS1ydpVnoIKBUA5cTwZ7OaxTKZ/YPdLcIvQNejhO+1hCJd8EP+gzro072nZrekHLK9/OUTmt3V4LYUnK89rmriLyMqKgQrGItb6xrbFO0E3bYRcR2nVXAvmJa3NWCUE9f9KyQ7PyiQkw2zSVHBs4A05UW9W1gE3tIWmZj5oAHojUat7DencnzOX/CwqGGotLy47ehiEoRwupAR1t6psKk24YU/OP3x3+jMLsWhGdOQmTnWamBJ8gXAWAnPL8cyFAWGIth1PUpiQH7HeTmIh/o6/axLtdAcFtNcLZepH3HiqwgTlYIVJYMaaa2mDCiRjitBXIVmpdmtTipc0IVgSxKkgn1PW6BubKD6m/jjBrKCtA== X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 31:qb5QrbWNDgiGWcQPj/TZrBxetst1w3SKoTEaHgeIYITgf1kpuYNqMObHKzrichzv+wg4iNRkuVqESN9Bh+/T3j1D22Tstt7JeNEkitzp66KV7PTPf8yq0BJeenSpJfz3Sdbm6rOgPFrCqo65jm8wGzkVZyCkWvsY5MBSgHXFTr3Y4XcV4PAYss7IjRNh/zdp2wOTNh+LWKKo60+WpzLUrh5qkF10OcBCRJ9BqbQvYBE=; 20:xKRm5s+COyNKDylR+if3sRwA8pGgF0DTaHDrnudWAYzErg4E2VyETPQz1e3VSFKfaq1U8s4tWlCDu1O2iFP0lVy7DnGeoY1bFVbB5WuNu0staq96uNzHA7BTW9jPEh6GG27SqsY30t8QcunxX/NOhonk1tEmiTodzbnt+YfjiffixTBP7oD0U4BDE3M6LTuQN8gdWw/UzX1wVhMu7MAq4oPiHDODGxRvtRYB0ZLSbWZcokRVDhQGmJOaFmXrTdZpEFE8g5mE/NsR9Ml9nYj3mtBHuRqcdcqUoB8eYFZ3+ZFU1hVHWVWiIzqpDj/ASIn+3E3g3iZdPNodu5LSkyjSsLc98Z8noVU5yoCdX+saH3TvSYD7eJx+HN8i81ynSndQP1wo/kmksQaKFGyRFhu0KEX7/NaRTYEAwZtEuTux5aE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(20161123560025)(20161123555025)(6072148); SRVR:VI1PR08MB0845; BCL:0; PCL:0; RULEID:; SRVR:VI1PR08MB0845; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 4:S5NfGpLDQ3InkgtijIP6NTbuG6JBKtko5CnMsPFDgEkPg2X7OyHMoDHKCtb3LDXrgZojYQeZHLWqlTdJTwDqGZfTtrELarbthP0mZSqiOoUmFE8fNcOuQ5pp/YRX3Io8aoNuu4hovJA/Efn67blgCqAS3+oUNWtNDCSi7q+sXrq/sFwQ7BTAt1GrUkhvU5XPJDCsmPhoz3/vff1686Ed7AXu+m4vC1PI8RaSxTRkIAAohPlUZZbOpWazs5m0LaY+kU1V/quKyzQF1OvzUu0sDyLsMkM2xyZdVR8pFhHe9uuPVBGoqKdw3H9Bn2PXkHQG5ma18dYf27rPI7NJiTYqztOROpnJrxjJptpCVVFXGw71q+LOu2eh2D3BQsIRit6JJ5awwoW50Zl1NUKEeXDbFq7sVVO0SiGvSwxgEfq40WF2CdiMNnnO1R/yPnQrR8py+D6MXyusurWfVw4URyB0PW68hdzJx+vPm0lPI+HyJDurx/IVfDEFOG/4uXT2RWjF1RZwL6CF/InkQxqy+vl1NnQ+K/icY1sfPBavwG318MrPwJ1D3Yy66iGeRDbFcw+VOhU/v6Gj5iO2ZfY99sLkxcgnS+psqH5UhM3m6FfCRjzQ6phtSHdA0g86MbiHAtHjQfX1fdPPXLm49FxewX9p3W47mgqougDfxSYQTncHgLLy4vlRED6aHo9Zq5us77CO/bGcDClijzucxnsY0Uc2ZQ== X-Forefront-PRVS: 0289B6431E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39410400002)(39840400002)(39450400003)(39400400002)(305945005)(7736002)(189998001)(5660300001)(8676002)(25786009)(48376002)(86362001)(53416004)(42186005)(4326008)(2950100002)(38730400002)(81166006)(6666003)(36756003)(2906002)(50466002)(33646002)(66066001)(50226002)(6506006)(6116002)(54906002)(76176999)(47776003)(6512007)(50986999)(5003940100001)(6486002)(3846002)(53936002)(1076002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR08MB0845; H:rkaganb.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR08MB0845; 23:xrhdPhXR51R+Wfre/Vn+ow4g7Z1ARBjAvDZVDrjv/?= =?us-ascii?Q?rm6oQeSnWdKp2Bg4D1WDavAf1bltzRcxilgYqJrwcIlmv5UFfklXYarobzZo?= =?us-ascii?Q?QI0vH3yRGhyYtj9rS8Z7Bau1GcB50xweKCg8CNh1dn4VbpphuZlWidEVcz75?= =?us-ascii?Q?FzfORJvgKbeP8UP496IoIoo8cwQpZW3OWKq5+7o3DtNsbKH+OywMJqXpor0L?= =?us-ascii?Q?lh4LI1Hbnp/qN6zff6PprV8nhQluRbd2IIgVXVDV55M5a02lnPVdfmUoWfew?= =?us-ascii?Q?VxSsL1FYp6XhpvCv1bn5QVgq7TR0fGRmCy99al9tYhteYzU/Cjg4DklxVa/Z?= =?us-ascii?Q?l/wo4mIppDJ9d2epBaBh9A6PCxdEP1Ou6shGGrd1qs+FEyKc5AVVnxajvCTb?= =?us-ascii?Q?JnnrJOVfnwK6TDj500hXyjW0eyTqx/tXhwp/8oH++jx5Eqi5H8IJpXv8LOS0?= =?us-ascii?Q?YH7WO1aQI8mOWmJmwp+D9hkWkeNZ1gj1AhH3zICPw82zKQIOhQpNHqzjdR32?= =?us-ascii?Q?CWW2XRdsotug13epXhe1cSaxjPYc/4QhUzAxDIW3kxTvINcG/hspyHZQ1EmU?= =?us-ascii?Q?nOBS5Nyyj1u5GZqPqAlrh6zvwyAbc+dVaVr6T5SKYztTGhBBy8Hwe0aRsoaD?= =?us-ascii?Q?yMZTCBV1ryCUzM4S7+VBDGr3vkJgS/LEOriBIeZv1nvcfFgsT+DLUR3p9+19?= =?us-ascii?Q?Nzi1qn+Jv6Bl8k1Y4H70Jt/N4kjVaH9xqyZStQQeB6UO4S21FEL079CgTVvv?= =?us-ascii?Q?4uYa89EbpBWRqBcrN89nvVNUrtn+go8ZFVvYrYOhVHyMoRNENAGFkCgI18lB?= =?us-ascii?Q?UIjaK2HGrs0UXSj5LcLKvxNFodU/w02WIcCh/alnuq5wLmD9AuRJPgNyivUX?= =?us-ascii?Q?RFpMJ8yEpoutoolMopjK8N/gYeM3Az59dQHAwmX0zOJc5PSoNnF9yNmfykyN?= =?us-ascii?Q?PERgqw3qk+WJCzjNqP8aC073Q7ikfD1sSR7V0JAB40hnoU7BjufasWc01Bym?= =?us-ascii?Q?Bg=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 6:GsX1LG58tjzsw2Ds7Hnry7tdOOIwFhudXr0auralItCoPrr7w0OU+nC5WDfg455iScpWAX9oaEb3OqmcHztLvK7JDqqyzuQkB4V7Wu/IJqITkcCjCBigzM+PL6HNWb22km5J0Vf28mtpBv67O9RgVijpIOWYyqTdQDd60EqfevrVq/FQs5/apjWZtcQ3hfBDswt6ORVIbgJXGZT946ePAl4nu8m6v+GG3U9EE2O+2KnEUS74m8GwmLa25TotxBb4oS8M3HaK8h9pnVdEUtgZZuDuRlVG9O5MCWF7847y2LQxvUa1q7iblBofydiqyYrgPTNZXJcmC8CscbC2wm+Hiqt5yH98cCfcxIvAFVNIeFaKK+jFFZcorIllw2/pOXif0z+BiPcawYqFxbNTnQDHovhdbOQyyVDdQOyVc/uxnHlCLb5pJO+7ZZyuFAIU9fjaRwVNRpq9neU8hmBw0potMbrDK7UMQ5LglKfqb8/TCx1ydYafv4eDhdXWr4vRDILGQOptciy0ZiTGx/w+WcnISQ==; 5:vnYOrm3swACKkA/KLlxo0PXoBJcQ05X+m/dVtUwNe9Y9Az838fyHAmgavI2ixw9NxJPBgcjYBQuPlem6ALUKMO8AvivmkKMpCA+JkYlFVgC2jxiiQRwhINXxTz3RfjHL2ObNNYhDHxSybzwGlQuhVQ==; 24:Jh47ikgR7YeGO8shZH2O18TTjele23N8x1yKJuZfY9WHKkESDRh9Ux/Bd2tZw2ztINaMlgGl9vHh3wrOWccTeAIUb4XWg5pp0Gfhzhdsqb4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 7:0yvld9NI10iL0nVGKtNrhp700g+1hjueUWyqGaVhR/lVY314Tc9doKxwpz8CghPptpeRmKRAApM+JYKN3DobgvCbJoBLyCRefNYLZblFaSzAGnJRi2haAsUOJtCBQLzWXpuHdcRTiL0gfoScBTpIzKG1vzyInZ03JmwoDABr0zgfXpruWPc93OvsVZKuQJrhMkNbAJGUQCIRXa3gLGzHjFyXN4omMfLNcKzTsGgZtp+OMt/qeskLETZsagiq/wB2ATb15mU/c045FQXlpvBJe77qofz/94EtS7XIWfx2hyKnXIkOibHAGEAVyhLg0G87V5QfRmSfiAcsJoy1TSGM7A==; 20:NzGJ+GFUFNsjpoBgz/89J19SPo1KOBDHmOdrBrfrOrjFjJqqC+Um/UIdK87bvhJTmyMYsMcj2ZFf/H76GAxdKurK/QElAft3sxUnarYJEMB0ghaldicznv58+vT3xFf4XEWpOYe94py4VjSA1pRbCEykoc63+RkWGwC79q1oFak= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2017 14:18:20.7458 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB0845 X-Spam-Score: -5.6 (-----) Subject: [SeaBIOS] [PATCH v2 5/9] usb-uas: enumerate luns with REPORT LUNS X-BeenThere: seabios@seabios.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: SeaBIOS mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Evgeniy Yakovlev Content-Transfer-Encoding: quoted-printable Errors-To: seabios-bounces@seabios.org Sender: "SeaBIOS" X-Duff: Orig. Duff, Duff Lite, Duff Dry, Duff Dark, Raspberry Duff, Lady Duff, Red Duff, Tartar Control Duff X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Roman Kagan --- src/hw/usb-uas.c | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/hw/usb-uas.c b/src/hw/usb-uas.c index 10e3845..f00221a 100644 --- a/src/hw/usb-uas.c +++ b/src/hw/usb-uas.c @@ -86,8 +86,9 @@ typedef struct { =20 struct uasdrive_s { struct drive_s drive; + struct usbdevice_s *usbdev; struct usb_pipe *command, *status, *data_in, *data_out; - int lun; + u32 lun; }; =20 int @@ -168,30 +169,41 @@ fail: return DISK_RET_EBADTRACK; } =20 -static int -uas_lun_setup(struct usbdevice_s *usbdev, - struct usb_pipe *command, struct usb_pipe *status, - struct usb_pipe *data_in, struct usb_pipe *data_out, - int lun) +static void +uas_init_lun(struct uasdrive_s *drive, struct usbdevice_s *usbdev, + struct usb_pipe *command, struct usb_pipe *status, + struct usb_pipe *data_in, struct usb_pipe *data_out, + u32 lun) { - // Allocate drive structure. - struct uasdrive_s *drive =3D malloc_fseg(sizeof(*drive)); - if (!drive) { - warn_noalloc(); - return -1; - } memset(drive, 0, sizeof(*drive)); if (usb_32bit_pipe(data_in)) drive->drive.type =3D DTYPE_UAS_32; else drive->drive.type =3D DTYPE_UAS; + drive->usbdev =3D usbdev; drive->command =3D command; drive->status =3D status; drive->data_in =3D data_in; drive->data_out =3D data_out; drive->lun =3D lun; +} + +static int +uas_add_lun(u32 lun, struct drive_s *tmpl_drv) +{ + struct uasdrive_s *tmpl_lun =3D + container_of(tmpl_drv, struct uasdrive_s, drive); + struct uasdrive_s *drive =3D malloc_fseg(sizeof(*drive)); + if (!drive) { + warn_noalloc(); + return -1; + } + uas_init_lun(drive, tmpl_lun->usbdev, + tmpl_lun->command, tmpl_lun->status, + tmpl_lun->data_in, tmpl_lun->data_out, + lun); =20 - int prio =3D bootprio_find_usb(usbdev, lun); + int prio =3D bootprio_find_usb(drive->usbdev, drive->lun); int ret =3D scsi_drive_setup(&drive->drive, "USB UAS", prio); if (ret) { free(drive); @@ -258,9 +270,10 @@ usb_uas_setup(struct usbdevice_s *usbdev) if (!command || !status || !data_in || !data_out) goto fail; =20 - /* TODO: send REPORT LUNS. For now, only LUN 0 is recognized. */ - int ret =3D uas_lun_setup(usbdev, command, status, data_in, data_out, = 0); - if (ret < 0) { + struct uasdrive_s lun0; + uas_init_lun(&lun0, usbdev, command, status, data_in, data_out, 0); + int ret =3D scsi_rep_luns_scan(&lun0.drive, uas_add_lun); + if (ret <=3D 0) { dprintf(1, "Unable to configure UAS drive.\n"); goto fail; } --=20 2.9.3 _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org https://mail.coreboot.org/mailman/listinfo/seabios