From nobody Wed May 14 00:34:25 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; 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 1488365202318736.3896763788715; Wed, 1 Mar 2017 02:46:42 -0800 (PST) Received: from [127.0.0.1] (helo=ra.coresystems.de) by mail.coreboot.org with esmtp (Exim 4.86_2) (envelope-from ) id 1cj1mE-0004cR-D3; Wed, 01 Mar 2017 11:46:34 +0100 Received: from mail-ve1eur01on0130.outbound.protection.outlook.com ([104.47.1.130] 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 1cj1m1-0004Mo-5l for seabios@seabios.org; Wed, 01 Mar 2017 11:46:28 +0100 Received: from rkaganb.sw.ru (195.214.232.6) by DB6PR0802MB2469.eurprd08.prod.outlook.com (10.172.251.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 1 Mar 2017 10:45:50 +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=6mWuRUtg5YaEiB5mtkfmeRb8BneyYtdYD3WYLuZE+hk=; b=gwIoGeYyfCtoW93Oo3m3LJOZE16vsJvm+yLJYa0pyKdCY1LAslG/I9Wn/9iW9CS2SA/OAmnaiUJs4+/cGSoyFS4hIjn2dTu0HRVUoozCqT26sSk8EHEo3QS1dMUrMKnvl6IVpixrc6GzKzNU6DWb0ae0eavvBDoXSM/Cjt7KN2w= 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: Date: Wed, 1 Mar 2017 13:45:40 +0300 Message-ID: <20170301104542.7373-8-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170301104542.7373-1-rkagan@virtuozzo.com> References: <20170301104542.7373-1-rkagan@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR03CA0038.eurprd03.prod.outlook.com (10.163.170.176) To DB6PR0802MB2469.eurprd08.prod.outlook.com (10.172.251.17) X-MS-Office365-Filtering-Correlation-Id: 6d7e70a9-4971-4c2c-0153-08d460902097 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DB6PR0802MB2469; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 3:8nfXu19ZDLqAtA81Myn5iCQUM42+sN/hUjrcE6e2pX6bgBEqvEUNLkNeBOT4aQG4FkXnPh9uBNaQXf2m+Rkq7Srmr3XJKnnb04BLUwlICAV/LzCObl8rTlDNhi275LkvUVgcmMglAf5/jA7oLzumIjyFSrkqdTlZhk+9ko9S/G1Zyf6vkC4dGHlr9q/UQ7aA20LAIAesdRM6j99IjVcUcvRE4/nASHPQkDXHx8dqGGe1ffxkuPU4H7nbOAaCl0zCnljX6dTYlYyjwZ7R54r4fw==; 25:oSgBWuBafo+0rqNT+xjyef4pdIDNXovZCEahMGiPDgfmOb+sE7Kym7UwamfiBz/fRtCoJYIv2e5zsP0KCnT+HVCVlmPwkvTjWe+qRAssHSofNgxhArfiUXr1xyCdASFjoBnAr7fkxB6LKJpYT8qfD68PpEw98lwW1GddVNd6YHJ0ifwWC/xCLQ1dZ00BLVKBUKTfWmJq+dCKNAGwX87OfAyAmZNOREQrCJBKOGTGwyxUsdsQ/tjqnyrs1dg2S9HSHajIaJDQNjTvhc/OC5ln0nB65dm9lgAhsZmXJ+4TLoIODHzc3uVC32pLKZMcRQroMkwcUi3GLAQ/QOuDAjFDW5WEWw/ujpmai4gCFiHQuzfAFe3AvEQqcvXhGk0wc2leVq/O2/OUZTWU1QjY12SYqs8KiZDQEmpa7vRgMIjw82bTs0HtefeMb85J2e50pbQX5tIu3Vt1aI9p/pkw5hMdrw== X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 31:p8kHii7S/3eJqk+m6Nyjn0x8YzVLinDHSkRwsLls5pXJ7BxPAkvSFklv6TZmUjIYLPQgx4vgucd9DrqvoWbs6q/alNcx4uPj/EgjpHaNyBVnFQhp1hki3mSYQ/UMurpPiX96+rvsBwP2Io2L3c7DJMvr0cJPnVP7TfWl9veTBQMOgsc6jeWAtTLlz806Jeb96WUCn/GeWxvis++b4+2hBEla9Jecnn3ZgKpTXwTqOX0zKhKHd3uDTfarksMLNZRFeFjV8Hp7Uukm6tUWNJedwQ==; 20:leABBOhJIes+xFTK/Pv3bzBLq/6Z86om9ot8Y6sSI/91gz+5sVVO/kzo37dWRQFz0+VzMAFuy2PreT6FQt/mrYyyu/CEPus8nqPmqwn9IeRwlQK+odfXfMohSK/Ff7uHpS8fVV9QQ7EfYs3ywrEH2cb7ZlETBhwSIH/7rMfweXmL2VLQPsUxNCJKeCQMSqOP8WfSX4rExcgkAEyO2fsV5YvAWYb9pMolpxk9fgXZWHzn9kQdOTpIdrze+IJmD23W+poHo991la1X9C9pJwWYAKANtDoGsypTFfl58AD9eZqbqM+dp9byg9AjH8wZfCsPZPF++j2+LC1eFrMO8aVD1dkhlflowK/9wkQWOHwxKj5u5jEHsvFS+svcPd0xu3FE6WOyc4JA6mmJ81isQ400c8Yi8PGrgMjvKblN22Q2DAc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123558025)(20161123560025)(6072148); SRVR:DB6PR0802MB2469; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0802MB2469; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 4:pxAykRQByl2wf+QwS6TNlGPSHl8LfaALsGcsrQjbnrp3NDTkpMl+wd/razVeMe5SjTGEsXa1J88qnSXpHdiDoNekq7PmfH7UliefaifcGEA0D5wxdYd6aV2kJtEZ2q9tbB/lvLjo8zq/91Sj1Og1hVDZM1IQph9EdP1ua62qW4BjIyPfoX/En9twP3IiwK909aiWrgeX6E5vm1FRWtWyrIyXcMRGxYYj3JErMQIqdJymFkHi/zYQ7gJAKZvxVBHfQOfwpgP16HIZ55gIYtgDj4fTzSIZp+ZxsAg0J8c67fkkHHh4rfJqA9BNn/pN956t6pQUt3oqSmBXXbXmwgGEdC6YNKxzOG1QwGXAKvYyhNQXXjnPGmwGRbGP8z2PacM9BHzNS+OxBawzEPCPoV47VDOir5R+1Zwl6kEdNkpFLDfzMdGg5olcAKQm82lrKUAyy1DppR8eu5PDp0xHCrZ25x5XCq6JFmDJ5/BsIY76ChalEAgkDqQn6wplgKQHt2XfwQ5zW1Gs4LEiJqDP4ITtLS6dKl2UTQxCNqLMtRYmlvK5j82cv5wDsokut85Hl6vYanrq4gVYAn3aynybC/Av2r7KjgV955/d6JY3F8tcOGU= X-Forefront-PRVS: 0233768B38 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(39450400003)(36756003)(5660300001)(6486002)(5003940100001)(50986999)(76176999)(6512007)(2906002)(25786008)(2950100002)(450100001)(1076002)(6666003)(33646002)(6916009)(50466002)(6506006)(2351001)(42186005)(38730400002)(53936002)(305945005)(66066001)(92566002)(81166006)(8676002)(86362001)(53416004)(7736002)(110136004)(189998001)(47776003)(6116002)(3846002)(50226002); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0802MB2469; H:rkaganb.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0802MB2469; 23:f2PPHkoeZMXyuO/NUHswlQldTCex6rd774bqC6w?= =?us-ascii?Q?Kh0twCbTxiQPTSakZ+bB6oJDmUGcehqxWwSOLcXAJv0YYBdgmTMLpaEfxr+c?= =?us-ascii?Q?CLNg0/HmzfEA+YxLm8k06sNm2N6YxcEgbc/78YAsgiwvzNtR5RB7AXwEKyFp?= =?us-ascii?Q?hSM4iVBqUqpMf4Ge7BXWO7HFpqAN3FlEJ5UXQ15JCID9m2y3YIsArPHPaybX?= =?us-ascii?Q?hDCvddJtNLUMpRFCq9gyDzHZKK8OBcg4x/SkMt+4oBn8uSbi5v6sAj30Vg2m?= =?us-ascii?Q?GI5rb+2mgBwgqHAMteuKdPOrdqfB5aRty+DHZ29EX1KCRBBkJ/OOliru+its?= =?us-ascii?Q?4TsqsM36TH696euNuzEDrqrxszhZb3mE16czxUVcosddDpM+LhjHuui73xQo?= =?us-ascii?Q?D93ZfnGKfdwtvTJ5y5tvwWg9guQh9MYb3Cg0VCbDU4e1S2oSJwXk+dYJK1Km?= =?us-ascii?Q?gMXamGTKE1RJOKaOcnlonwd1zfgqGmrK5UWyGoPqEIbJrDLMLHZXqAbEj5f+?= =?us-ascii?Q?IibfRFOSFavu7E7CjJXAINLpFkFHid4KGtZvX5rwscbBr4KYZJkAoIBuxEgJ?= =?us-ascii?Q?0b0ih02WaMrdUNG4dvzZp75qtjaiygUjLfj4TPKJbbPeih0KRNrbMD8cfWck?= =?us-ascii?Q?f5geSszvWNyn66WFwPer639FdmoTAXD7pRkW2jw7Ks+x8ujoqybfg5es0VXD?= =?us-ascii?Q?Z96ia49DvyrdnacomiPvKWxXUK29Uy63XDMflhfPA0DAHgXENF+yRECWXGtK?= =?us-ascii?Q?xACJS5Sq1YVCwkXVNQlpBdmwpdksQ0uyn2SxaiQF5ohIGMHJubB3rqL2AS0w?= =?us-ascii?Q?kvw6KJaabEPN9ntwxuYfG7ajcJTD2TWGLpG0kkyfKBGP4NR/JXiwS29eI9Bc?= =?us-ascii?Q?rPPshdolqjyACio2B1yu/Y2VxcSnQ+Qd93tAYxyCQ/zm538l6w76VPT9Bho3?= =?us-ascii?Q?mZL6ci6QnYw7yojZRxZv6GHsjJGYN2a8P+A3oYZ5iAw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 6:x3EetDrZLe/JlmFTUugXSRcMi5GywcfMrbDHLlK9S+AfNCIhQed/6Ae8Hk9r4UneLptuKZ5VSLvLIF1zPV+dXKQ12Zqv4a2bIUNkwrX2vZFix1zJixzTGorepIBzRpiGhFSFuXcyFtFwgXplbBBDq/kSj6r/+RwNBu4RB6dINA7P5gsgO4YbOBJMUt7XSpBe/OehWYybt/NHF8Xy2bJ4xhXVF/VA//hWoNeyAYMt9eDr/3GUbweQBoWfWandxJN3TEHKGA8faQ9TALFBGUt9mS3pISptobIjJvR12hxPeEHjpdXoDa9nZgAeMMubP9v5salG5OsWuCNFCM7L3SXuDcf8NJIzQ+JaL0RlDecdiZPRV9swer5vkLVkTgLb308Hl0XNxv+QxhOlAjSBQ584ww==; 5:9qyZud8UBFliaUadKQotGhRoJHOE+hb+MHkruiY2uZypKi5ZhBj+hlxFTmCtPitWpiz+E1R8kcDNqXq2Ot/P2KerOtpV3bkbZE0I8Xem9d8V6PJNbyP+fArRTPPKHurpNZ3n7HdSY9nrSClbx2bo3g==; 24:O1LNVBYLlVKS19uDfwHkcz6ZBLrvAmTpRYZa84czVBysF2uG+DzmradK1ZEiaUnKCLpk7p/hRon6P2IAV5TACs/rw6+0yK8ug3JA7NcOoL8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 7:fNsNPdfmwLvJ1SB1g9vqYumrLk8GavjD8xrhhg7WzbZRkTOMY0cainNJovz5cPSenKi56CpCF87nfkqdrbIUuVF81VKh1+Hrj1W/JQ4O6VAwLoplE0Kb+2UqP4TT+hk8AghxSzm9N5x1qL1hyl9+0yGzrRImYVAR1vWyL8s4HBYLJbUWLx2g4y2+T6pl7RgSpKBYz1D/XO99zC0+Dpeu++jzczJ4XfeP2zCVAVNaEZx9HFKS7flWNmSTOMsARExcgxXvArc1RVviIx1fOzlzrq5XVVZH/ZHy8vf+NmlsvJ/QDNrcRccEXoFJpBo/XOY2fUDUw2IJdbbFb70MvmVUWw==; 20:zs7sPjeYzRwibOVrEQ8R2sZvsUQWy9NjoJqAjoTAFMs17OlSNVC2wf9m7pW3GurbyvD2voy7W16xEZ+Y4Rr0I5FpAB1lFtTOm8VV/PAwebtwCTt2z3V08NyJy/iDMZvWq9XULL4+WdozqMlsNBRb6fmp99/axHJ4HFkvmhaRKVs= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2017 10:45:50.2044 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2469 X-Spam-Score: -6.6 (------) Subject: [SeaBIOS] [PATCH 7/9] mpt-scsi: try to 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: , 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: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Enumerate active luns with REPORT LUNS and, if that fails[*], fall back to sequentially enumerating them up to (arbitrarily chosen) #8. Note that this patch also makes mpt_scsi_cmd accept luns other than 0; I've no idea what was the original motivation not to, and what can break due to this change (nothing broke in my basic tests with QEMU). [*] in current QEMU, REPORT LUNS does fail in mptsas1068 because the returned data is smaller than the allocation length which is (wrongly) considered an underflow. Signed-off-by: Roman Kagan --- src/hw/mpt-scsi.c | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/hw/mpt-scsi.c b/src/hw/mpt-scsi.c index a37e44c..7bc8a85 100644 --- a/src/hw/mpt-scsi.c +++ b/src/hw/mpt-scsi.c @@ -118,9 +118,6 @@ static int mpt_scsi_cmd(u32 iobase, struct disk_op_s *op, u8 *cdb, u16 target, u16 lun, u16 blocksize) { - if (lun !=3D 0) - return DISK_RET_ENOTREADY; - u32 end =3D timer_calc(MPT_POLL_TIMEOUT); =20 u8 sense_buf[18]; @@ -198,14 +195,10 @@ mpt_scsi_process_op(struct disk_op_s *op) return mpt_scsi_cmd(iobase, op, cdbcmd, target, lun, blocksize); } =20 -static int -mpt_scsi_add_lun(struct pci_device *pci, u32 iobase, u8 target, u8 lun) +static void +mpt_scsi_init_lun(struct mpt_lun_s *llun, struct pci_device *pci, + u32 iobase, u8 target, u8 lun) { - struct mpt_lun_s *llun =3D malloc_fseg(sizeof(*llun)); - if (!llun) { - warn_noalloc(); - return -1; - } memset(llun, 0, sizeof(*llun)); llun->drive.type =3D DTYPE_MPT_SCSI; llun->drive.cntl_id =3D pci->bdf; @@ -213,9 +206,24 @@ mpt_scsi_add_lun(struct pci_device *pci, u32 iobase, u= 8 target, u8 lun) llun->target =3D target; llun->lun =3D lun; llun->iobase =3D iobase; +} =20 - char *name =3D znprintf(MAXDESCSIZE, "mpt %pP %d:%d", pci, target, lun= ); - int prio =3D bootprio_find_scsi_device(pci, target, lun); +static int +mpt_scsi_add_lun(u32 lun, struct drive_s *tmpl_drv) +{ + struct mpt_lun_s *tmpl_llun =3D + container_of(tmpl_drv, struct mpt_lun_s, drive); + struct mpt_lun_s *llun =3D malloc_fseg(sizeof(*llun)); + if (!llun) { + warn_noalloc(); + return -1; + } + mpt_scsi_init_lun(llun, tmpl_llun->pci, tmpl_llun->iobase, + tmpl_llun->target, lun); + + char *name =3D znprintf(MAXDESCSIZE, "mpt %pP %d:%d", + llun->pci, llun->target, llun->lun); + int prio =3D bootprio_find_scsi_device(llun->pci, llun->target, llun->= lun); int ret =3D scsi_drive_setup(&llun->drive, name, prio); free(name); if (ret) { @@ -231,8 +239,12 @@ fail: static void mpt_scsi_scan_target(struct pci_device *pci, u32 iobase, u8 target) { - /* TODO: send REPORT LUNS. For now, only LUN 0 is recognized. */ - mpt_scsi_add_lun(pci, iobase, target, 0); + struct mpt_lun_s llun0; + + mpt_scsi_init_lun(&llun0, pci, iobase, target, 0); + + if (scsi_rep_luns_scan(&llun0.drive, mpt_scsi_add_lun) < 0) + scsi_sequential_scan(&llun0.drive, 8, mpt_scsi_add_lun); } =20 static inline void --=20 2.9.3 _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org https://www.coreboot.org/mailman/listinfo/seabios