From patchwork Fri Mar 1 18:59:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jason J. Herne" X-Patchwork-Id: 10835897 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A5C49180E for ; Fri, 1 Mar 2019 19:06:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 93C6F2F0EA for ; Fri, 1 Mar 2019 19:06:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8262F2FD25; Fri, 1 Mar 2019 19:06:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id E54ED2F0EA for ; Fri, 1 Mar 2019 19:06:26 +0000 (UTC) Received: from localhost ([127.0.0.1]:42533 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gznUH-0002kK-RB for patchwork-qemu-devel@patchwork.kernel.org; Fri, 01 Mar 2019 14:06:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53737) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gznR6-0008Vc-IQ for qemu-devel@nongnu.org; Fri, 01 Mar 2019 14:03:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gznR4-0007sI-77 for qemu-devel@nongnu.org; Fri, 01 Mar 2019 14:03:08 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:45462 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gznQy-0007jE-H4 for qemu-devel@nongnu.org; Fri, 01 Mar 2019 14:03:01 -0500 Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x21J2YuJ172832 for ; Fri, 1 Mar 2019 14:02:58 -0500 Received: from e17.ny.us.ibm.com (e17.ny.us.ibm.com [129.33.205.207]) by mx0b-001b2d01.pphosted.com with ESMTP id 2qy88vnv64-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 01 Mar 2019 14:02:04 -0500 Received: from localhost by e17.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 1 Mar 2019 18:59:42 -0000 Received: from b01cxnp22034.gho.pok.ibm.com (9.57.198.24) by e17.ny.us.ibm.com (146.89.104.204) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Fri, 1 Mar 2019 18:59:39 -0000 Received: from b01ledav001.gho.pok.ibm.com (b01ledav001.gho.pok.ibm.com [9.57.199.106]) by b01cxnp22034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x21Ixb8k10551418 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 1 Mar 2019 18:59:37 GMT Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 486632805C; Fri, 1 Mar 2019 18:59:37 +0000 (GMT) Received: from b01ledav001.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1F0CB2805A; Fri, 1 Mar 2019 18:59:37 +0000 (GMT) Received: from jason-laptop.endicott.ibm.com (unknown [9.60.75.251]) by b01ledav001.gho.pok.ibm.com (Postfix) with ESMTP; Fri, 1 Mar 2019 18:59:37 +0000 (GMT) From: "Jason J. Herne" To: qemu-devel@nongnu.org, qemu-s390x@nongnu.org, cohuck@redhat.com, pasic@linux.ibm.com, alifm@linux.ibm.com, borntraeger@de.ibm.com Date: Fri, 1 Mar 2019 13:59:20 -0500 X-Mailer: git-send-email 2.7.4 X-TM-AS-GCONF: 00 x-cbid: 19030118-0040-0000-0000-000004CA2177 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00010687; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000281; SDB=6.01168179; UDB=6.00606765; IPR=6.00948794; MB=3.00025798; MTD=3.00000008; XFM=3.00000015; UTC=2019-03-01 18:59:41 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19030118-0041-0000-0000-000008D52A99 Message-Id: <1551466776-29123-1-git-send-email-jjherne@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-03-01_13:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903010130 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PATCH v3 00/16] s390: vfio-ccw dasd ipl support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP This is to support booting from vfio-ccw dasd devices. We basically implement the real hardware ipl procedure. This allows for booting Linux guests on vfio-ccw devices. vfio-ccw's channel program prefetch algorithm complicates ipl because most ipl channel programs dynamically modify themselves. Details on the ipl process and how we worked around this issue can be found in docs/devel/s390-dasd-ipl.txt. Note to Connie: In the v2 review you mentioned some issues with the error handling code involving printing of the eckd dasd sense data. I've addressed those concerns in a new patch just to make those changes clearly stand out from the rest of the code. I can squash them into patches 10, 11, and 15 if you prefer that to having it as a separate patch. Changelog ========== v3 01/16: s390 vfio-ccw: Add bootindex property and IPLB data - Refactored s390_get_ccw_device() to return device type - Made VFIOCCWDevice private - Fixed copyright date - ipl.c: Remove unneeded cast - Add new file to maintainers 05/16: s390-bios: Factor finding boot device out of virtio code path - main.c: Remove redundant condition from assert statement 06/16: s390-bios: Clean up cio.h - Switch formating of bit fields to make checkpatch happy 07/16: s390-bios: Decouple channel i/o logic from virtio - Fixed copyright statement - Remove unneeded include in virtio-blkdev.c 08/16: s390-bios: Map low core memory - Removed packed attribute from psw structs, added static size asserts - Fix copyright date 09/16: s390-bios: ptr2u32 and u32toptr - Move new functions out of stdlib.h and into helper.h 10/16: s390-bios: Support for running format-0/1 channel programs - Rework do_cio (create __do_cio) to avoid possible infinite recursion in error cases. - Switch formating of bit fields to make checkpatch happy - cio.c: Include helper.c for new pointer conversion functions - cio.c: Rename sense_data_eckd_dasd to SenseDataEckdDasd 11/16: s390-bios: cio error handling - Only print dasd sense data if we have a dasd device, or on initial query of control unit type - Fixed ccw casting 12/16: s390-bios: Refactor virtio to run channel programs via cio - Include helper.c for new pointer conversion functions 15/16: s390-bios: Support booting from real dasd device - dasd-ipl.c: Fix sizeof's - s390-dasd-ipl.c: Fix section "How this all pertains to QEMU" to detail vfio-ccw driver's role. - s390-dasd-ipl.c: Replace all instances of Qemu with QEMU - Added docs/devel/s390-dasd-ipl.txt to MAINTAINERS - s390-dasd-ipl.c: Include helper.c for new pointer conversion functions Jason J. Herne (16): s390 vfio-ccw: Add bootindex property and IPLB data s390-bios: decouple cio setup from virtio s390-bios: decouple common boot logic from virtio s390-bios: Extend find_dev() for non-virtio devices s390-bios: Factor finding boot device out of virtio code path s390-bios: Clean up cio.h s390-bios: Decouple channel i/o logic from virtio s390-bios: Map low core memory s390-bios: ptr2u32 and u32toptr s390-bios: Support for running format-0/1 channel programs s390-bios: cio error handling s390-bios: Refactor virtio to run channel programs via cio s390-bios: Use control unit type to determine boot method s390-bios: Add channel command codes/structs needed for dasd-ipl s390-bios: Support booting from real dasd device s390-bios: dasd-ipl: Use control unit type to customize error data MAINTAINERS | 2 + docs/devel/s390-dasd-ipl.txt | 133 ++++++++++++++ hw/s390x/ipl.c | 39 +++- hw/s390x/s390-ccw.c | 9 + hw/vfio/ccw.c | 2 +- include/hw/s390x/s390-ccw.h | 1 + include/hw/s390x/vfio-ccw.h | 28 +++ pc-bios/s390-ccw/Makefile | 2 +- pc-bios/s390-ccw/cio.c | 418 +++++++++++++++++++++++++++++++++++++++++++ pc-bios/s390-ccw/cio.h | 307 +++++++++++++++++++++++-------- pc-bios/s390-ccw/dasd-ipl.c | 250 ++++++++++++++++++++++++++ pc-bios/s390-ccw/dasd-ipl.h | 16 ++ pc-bios/s390-ccw/helper.h | 16 ++ pc-bios/s390-ccw/libc.h | 11 ++ pc-bios/s390-ccw/main.c | 159 ++++++++++------ pc-bios/s390-ccw/netboot.mak | 2 +- pc-bios/s390-ccw/netmain.c | 1 + pc-bios/s390-ccw/s390-arch.h | 115 ++++++++++++ pc-bios/s390-ccw/s390-ccw.h | 10 +- pc-bios/s390-ccw/start.S | 31 ++++ pc-bios/s390-ccw/virtio.c | 74 +++----- tests/boot-serial-test.c | 2 +- 22 files changed, 1422 insertions(+), 206 deletions(-) create mode 100644 docs/devel/s390-dasd-ipl.txt create mode 100644 include/hw/s390x/vfio-ccw.h create mode 100644 pc-bios/s390-ccw/cio.c create mode 100644 pc-bios/s390-ccw/dasd-ipl.c create mode 100644 pc-bios/s390-ccw/dasd-ipl.h create mode 100644 pc-bios/s390-ccw/helper.h create mode 100644 pc-bios/s390-ccw/s390-arch.h --- 2.7.4