From nobody Sat May 10 14:13:23 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 1493216369010480.8069233563732; Wed, 26 Apr 2017 07:19:29 -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 1d3Nmd-0003Fp-Qp; Wed, 26 Apr 2017 16:19:07 +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 1d3NmV-00035K-HY for seabios@seabios.org; Wed, 26 Apr 2017 16:19:07 +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:22 +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=fLkYio/6ZkP4SQVAw2LU9EpFu4EBdv1j18g9siSOytmDrK86RqrfWMdWxcj+33xVAMX34hbfRE0jB0mNIYoIN9QK+AtrXhgPk23JwpJk65+JqcXjccmcNdlYR/NgBrieyXp7f1Qj5bOBSXYHD0nGkX1BfX9N2pPtoEUDyLBA43g= 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:07 +0300 Message-ID: <20170426141809.12661-8-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: db116ced-4e68-4abd-bc06-08d48caf1906 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:VI1PR08MB0845; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 3:AlUB6uAifbwddL1xWJhWvbajsvv45LUY0cHp6s2LpnxLcef4buMeBARur7H2CevZxuyfnRSUkwnvmZqx//peBCtlm7MpsmW2LOpa9/JrrSW7I4clWFfZBH4wGnD0lO/F5SxdFOLD7UXUKJ6d1aGrmWTTf85F6Y9Lb6U4uHwDZL6erB936HwwJKUVIaWSyb32E/gXQbf/hsAQho+9Bv6EatFbp97gsFfsERQnMB/vU+mfrfdwIEJBx51NnuzU6QvkDBxNwo9tOVMo4PXwhf5RDkBfdfvUmUImoeZAJ2RgIOpwPYGCziQOW1d36Du2o56TUZo1cCGOpWQ8u8vr+/rdPA==; 25:vjydeDL2HNwvnpiLjmwUZ3cQCBF79ViFGEcmqcuYsnvV7aqvz/fi+8GbUNw1Sd988hxTP0j6yMmnaJeXHj7KtNFGZUuxUs/EtZcZkeMRNqHnRrucC0h461ib1GrTGYKkgju0mvRr2lxXzpL1970yBt9V7sVNcAxgsnQSzvu/87CX+04d1Dem8Y4srhk7QZ+BwdIdXAVd8OAPfNxv2gcOKZzJgFTDbRm7lTzoqBGPvgGt6MxZb5ZTA40l5GIr4Pav9xIwqbBOiZV+0HuWdd3ajqa3yNhNRvVwkc+RAT4inIQ7SjsuuUB+NxBOGhY3XFiyiD8BC3YhgtsER4EUfmEauzHpOH8RfgE+TNqGiUpA6fbM3ZvwqSUAWm9KxFM3koyMKpDYNVznFwhtVvvTIVD6yfXphB+o8tDb8Ea/sPU14ZoWBQvpaXjYPpMRA5m1NMRs01XrxeewhGX0TDbF5TBwwg== X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 31:M6T4QjNbm7ebb7xVKwMk6qaTnkoQ5Watpk8iOzL0tfW/nFCgnPxCznShMuo0lYiO22h0xxF+/qzT4SWtqgb68nKtnpeq/bTD7fRxEO3DixulqCX3ltfBMkUubj8m01iw5SL0VL1N/AhV79U56RM0h70c6hGQl81dleBUgLqt8bfzzKm+5Mg55f0QVIaFTROuObtHG6kEri78W23aQIWJjJDsDJdX4923fUXU74r1rXg=; 20:H+/XNgdpIreZ/0P+YSyq6fjFN4Wq2p3d6azvasR6LDdnPLMbJ8vjd0ajRLWbK4y/mylKn7yxfGJEToJaTLfDf3dcaW/DN3CIUStpIFhpUYXVOD2oKuQFq8QcJ00H6h43StOdhy5CCt6IQWLQ34vRZHfeUeKkCC+7iTSwsCoXVsVZW+Hgr/e2xin50m3WmiRjZ+uIX2Kbumx6bQya6WjrIDxdfRfFHLvDKIm4bMl2VDmwqOd6U9dwbbXfozNpCZ9sohvcMJWl3equnWNivA9sWLCWYQxUUTYQ9/SuZxpUTtlAdsuwJayRQe0rParmMzYbPBZmPgBsVw7GWPpKTv+bXTqG7ugC9X6rHpYZK8NnDmvn77e1GQ1DvAZBBgx1zbMIoeac5+2hsxr2YT6h4q/oNOtOrv3NcwVGpwZt60ixPMU= 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:fJZEQ7kxlNxqzThCEt2l35+Y3YhW9UzzesUQavmPZ8j93LylnYtZoQEcJbru9dRFYGbUOeDa0OQ5EAaQBhjOPRk0qzXArJIv4gbd1/xG0HlHSQwwEHQwMc14XcosWPeLN+cp4Lvwo1zruivwQvS/VRkMRmdI0VCIh0kPAVljcmzx86zhePEUXphyX9CBu2Zvo1948QniFkggnxvYX1oyFrv5o2Bwuc0aUl95+vCZ7/RktBoKL1jZx7MWnnR/OOWMfe53S08GDDzehlPpKg/2MOggoHe+we5/S8LcgE0cRIa07lWwKIgymkW71UAkHIN6j7q31P8ZVDUB5yP8PUduDoYgGWEe9CijpRa60qExIi6sk1nH8qVDBTPLTVlxH4NPenxWhTb3fWnI3rwRKINlVZGybRmxzuxp0K3j0sCqyE7HKussOAmAh3cLCTdcaL40Q4FCbbEayRMMtlVd1HPMNrliRm+fF9WluaTUrcp4/hjeF9N9g6jl8T/L4GmW/dB2Y/0BP34SxWOxt5HoWiO9Th/4HxIxb1vciNo8Ln4qvs5/fLPRnf+lIwjhEHJkFtnh1V1E/Wy9tV+m50I9aKkvREP4BhsHBHT6Qgm98BuVqSW/9Toj0ZioBmcgQ7iZX2W8egXQD9yRXUnsETPOSJR572zdlbnrhPN4pvi3JzbcXAUmvnWGlsnRf8auplF7XN31U7SEEmQZJCKmxZjewx86yA== 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:Ori+Kb6HmmV1Oj0Upmq71sWnefm3GWk61v6vNMvck?= =?us-ascii?Q?2FV2bRnxOKqMxzWvlTWG4gPOtsnk4pA1DZtUxD0tYclFk8fzO+dUlVLbO3Yx?= =?us-ascii?Q?q6tuPak22GYTEmn4KbzRlaN7GDSxFe1CA62fRwAgKbmT9g4PSt0AIPLHCaWi?= =?us-ascii?Q?tGeCky/qY2JFCn2btHoGSTleYC3v9yOMvWNghohnEYGT4UzJaO7xgBcLGndY?= =?us-ascii?Q?PbyVTk8PxULIzueHQTVYy/lfPnrUuUCbOuraOcwpYrccUDV9qPrE0dTOb3/c?= =?us-ascii?Q?ibArcf/TR4KB8SODJZ9SagEs63nRCtJOo2evSpYwKxCFDYhGrC49kPe+FO8W?= =?us-ascii?Q?qN+pIjqicUr0KAoEYkd5fCjf8cFJr+/LDlos9A65u6I5efg23mbWVbNJrmLw?= =?us-ascii?Q?vhWGAoQ6SnE/phvNbyppxOgn+sAZiNVEn0uwBCYb1NuwUrdsisIKP4bsit9B?= =?us-ascii?Q?a8+zvSFiuT1ZJeldOkS+lZS+elPLfjM9UjfFymtyasmS+5Bfi76CZHkg+PM2?= =?us-ascii?Q?Cnp4UZC9hUnad/+9+W/TDlGqzGpT8LcQb9zEhHgYPtmUsqUgeRE6oZP2n5Rt?= =?us-ascii?Q?3x+l50QKAuhOwH9Wx1JvDiiMxqg8vKuGZ9zJDYHG7zKLHR/CvmYZ0FxuPtul?= =?us-ascii?Q?dFxPqBPxwudrM+7kY+JxIJU0dfy1XUU4xCns9nuF6+hkwSvb6svhC+6PfPFQ?= =?us-ascii?Q?uawSUW8dkhOHOmRYefw44eALDFO2vdbbyqWEdh7crlx9UkcoZzdkYMqoprDV?= =?us-ascii?Q?QnkJHCJNSBZ2BpHF3M2rFDFQkW3mP+0luNMa5gYSPYmOu+kjkVCzWVaYJ5mb?= =?us-ascii?Q?zHmf+/mk2r/NHEfhH83xPBditSmycWSp6+2X56AyiwtnJR5If/SAwghaMk9L?= =?us-ascii?Q?DCyy8mnB3EDH+Vl55XKWzfY600gg1QeS9DLl5srMbHCKM5BkLjP7U0NI4YNz?= =?us-ascii?Q?kfADG80wqon1UQVudvKF5swmOcwYpMLUo4Sa/wS48hSNo4S9Akb5hvcz5gTq?= =?us-ascii?Q?TI=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 6:RjbsczCjMHQfZXFUGmn8zx07stw/bkmPQk87xPyXj4+a/nBObGaEHivDtsy0uMKEtPzfqflgoyXzCpQUy3OngIFFbUnvs1Z/x6xdGetlP58K4vX1Lrk9QioSo2U6byb7Phcnos22GCf44VlRBnnq8CDrG5yLLrXbvQiqnIoW7F6BbfrmqFlhjDtfp+Znkxj5pmgWis2d3eigcZPOecultgHuWTxP3HGLKwWGqD4RDyqap3XqtWc4MhiMseVrNF1zpIllcskhpvg+xouEeV8iV+/xeaVMabtrslmFPzW22uc1bez/UGaC+q3CmZfh9xiVXPoPegWbIDXHnseD2wq1DBJz+s7eRXEVJj1P8NFoe/9lCTtHKkJYd+QAYPjWrFrs05fQLbnB3Jo5V68HpnKO6bYuOcMpjN26m/DwHRKecPLRKS5XlQntF3EmxNwwZirwaO7k9oUVTQ1GONW2pDBezUQVtSWSG9mV2xcap9MF6y86Kx8vOVRO+E7NNgWrkYsQMbA/IOWBIJxHSON4F3LcxA==; 5:/gRtD2NMA6Wn5By54Q2tPD2FpDdC/Jvy3dtFvg1bP6Hh4iwJ57lS3qsg/wnf15tmFjoCwhXEpVrt9T9YllRHjceOyhxvT1eluySAN2HG+jd3aewpa1UGWxK4bEfKzZYt8LuAxYPcs+bQheWHQKweLw==; 24:S4c9ASOuMr3EWznz/REX9MEdtOZ3/j6s87Yg6FdG6e6Qx5JwstlhPArqeooGo7yhbbbHckiEhljcwc68Smtq1xYiwZyrOXT18HbYbcaHgpY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0845; 7:4qy3ZK8CQ/V45+h4ckmhFn/HtB9Cw0rDCisybTl0Ll8Z/MuxpXcOAuBJLNKSJH5XNoiDgsPjdRimm5r0H8jfc/0JqMPVib/oB39CkLYjEDbFs/bNE5sUqOCcQ8iBWEw+3Tc11Cz/iB9T6VMQjI/TYa3+VVUx81qr2LSwBo9/uWYteAYoIBGpmFKmxqajF4IWNadwOR/Vxub3dsSrUZndJG+ZZww2Kcuv62qNCq9xwfAFOWUUDxWB3v1T4Ac094fITCoiycnGp5cHBX0R42KK+kJ7vxHCL6VBtirG6Sq5+lqMD8OujAcjxr1s+vHSK+ujGjRtQXOyWA/XOS3q6HULEw==; 20:twv1iJ6GGtbvj0Z8PkV04a8g+OaSw6yCt5CeP22W00u224yMArliowhcg2PpSe6+repUJROgk+5zA5bbNVL2eUW4rw8jWmtePK6x/MnGmgAJLCUg1RFM3X2p4RBkvaycNlDo4yMDMXtcN9ZEB6e09YSN/TX5M1hCGvXsvR9x0dY= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2017 14:18:22.7064 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB0845 X-Spam-Score: -5.6 (-----) Subject: [SeaBIOS] [PATCH v2 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: , 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" 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://mail.coreboot.org/mailman/listinfo/seabios