From patchwork Mon Jul 22 08:38:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Abdurachmanov X-Patchwork-Id: 1134781 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Mv8eeevh"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45sbYf4Nkrz9s00 for ; Mon, 22 Jul 2019 19:15:32 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id AE8C9C21F88; Mon, 22 Jul 2019 09:15:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id D6B41C21EA7; Mon, 22 Jul 2019 08:53:59 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 2AB3FC21E08; Mon, 22 Jul 2019 08:53:58 +0000 (UTC) Received: from mail-lf1-f66.google.com (mail-lf1-f66.google.com [209.85.167.66]) by lists.denx.de (Postfix) with ESMTPS id EE97CC21F2A for ; Mon, 22 Jul 2019 08:38:36 +0000 (UTC) Received: by mail-lf1-f66.google.com with SMTP id v85so25965166lfa.6 for ; Mon, 22 Jul 2019 01:38:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bmzZu74vZDLYw7QJVrOyNAV87ltxIriyJkFn7hwK39w=; b=Mv8eeevhqP1CMxBjTTvM4oWhBPVXk2kcTSxKxOFuL1OeT+vFrEbmmWlbMvE56698cu gxHnklKYh+6BhAhxGJHIr7IHfcIdx9Xi0LPTmR7esjresdgEFnFv0t2ccLuQ6iKpNkLY owJJTCj7oicvu+yHXVto/Pr8J8oDX/hGqMd+zrgNcekMXRjyiY/Ma/0X4RkWkZMFRkER DQArVlLFlWClXpNw6HSewgvElxTe92Z7UoIwLBIk7ehAWtQV66CJNZUUvYxh8SBsHkVX dJ6etLBKtVyOFjRXHGNjelTT73GpBHlZFPp12WKzrsSb076d7DhXZkHiKmZ21rGNpFZz VXlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bmzZu74vZDLYw7QJVrOyNAV87ltxIriyJkFn7hwK39w=; b=K5sgBiE7YLM1fHvzAaJKDzgQ1opCVUKaYBR4+LQK4LBbBMYPAqi0eQ11eeIxEFyJ4U a3LlVw4G60JVDnByZQZBJbbTjIcC2swGWYh/v1XT64I6qtgNQ8+4JpoligzsMBpNLAmQ ePsl82ofm+ay9gsdgqEC7X5TS48RYBI+ia0+fbNxrjP3N3/+tCa05tHlLdxMKAmFJauQ J0o1+rGEUF7ye36T2452+dlTanNDVv0Pf4oRRT0tbxP6IqxXcSgMsdueV3iVysgYsMyD iWqCk4s3/hWSTe2PxTpS+F3w1DRFTnEf9pGM/9XsaCHKXCcIunhhiRLquGWAatZk3Nqs dR0w== X-Gm-Message-State: APjAAAWHqTjtFcm2scKbi89ijjPQS6cl/Fm3WXghob3m0rVfW54/+YaR mdPURhEzfYvFMEIcARz4aV4= X-Google-Smtp-Source: APXvYqzWPkq3SzWM+JdPSuqru/ojM/Kr4u8nud4K2vYaKqqBq5KQH9hQSQUgcuUYugqmiOjIb0xRKQ== X-Received: by 2002:ac2:4d1c:: with SMTP id r28mr30143872lfi.159.1563784716336; Mon, 22 Jul 2019 01:38:36 -0700 (PDT) Received: from localhost.lan (data-162-227.cgates.lt. [5.20.162.227]) by smtp.gmail.com with ESMTPSA id v7sm7501042ljj.3.2019.07.22.01.38.35 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 22 Jul 2019 01:38:35 -0700 (PDT) From: David Abdurachmanov X-Google-Original-From: David Abdurachmanov To: agraf@suse.de, lukas.auer@aisec.fraunhofer.de, sjg@chromium.org, bmeng.cn@gmail.com, xypron.glpk@gmx.de, martyn.welch@collabora.co.uk, takahiro.akashi@linaro.org, jpewhacker@gmail.com, u-boot@lists.denx.de Date: Mon, 22 Jul 2019 11:38:11 +0300 Message-Id: <20190722083811.1755-1-david.abdurachmanov@sifive.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Cc: David Abdurachmanov Subject: [U-Boot] [RESEND PATCH] distro_bootcmd: refactor virtio to support PCI block devices X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Starting libvirt v5.3.0 with QEMU 4.0.0 use of PCI is automatic and thus storage is connected via PCI, which is not visible to U-Boot out-of-the-box. Refactor to do "pci enum" followed by "virtio scan" to see PCI connected storage, and allow bootloader to load kernel and initramfs images. Tested with Fedora/RISCV using releases: libvirt 5.4.0 & 5.5.0, QEMU 4.0.0 and U-Boot 2019.07 RC4. Signed-off-by: David Abdurachmanov --- include/config_distro_bootcmd.h | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index 26e61ef196..3570a32dff 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -254,11 +254,11 @@ #endif #if defined(CONFIG_DM_PCI) -#define BOOTENV_RUN_NET_PCI_ENUM "run boot_net_pci_enum; " +#define BOOTENV_RUN_PCI_ENUM "run boot_pci_enum; " #define BOOTENV_SHARED_PCI \ - "boot_net_pci_enum=pci enum\0" + "boot_pci_enum=pci enum\0" #else -#define BOOTENV_RUN_NET_PCI_ENUM +#define BOOTENV_RUN_PCI_ENUM #define BOOTENV_SHARED_PCI #endif @@ -281,10 +281,24 @@ #endif #ifdef CONFIG_CMD_VIRTIO -#define BOOTENV_SHARED_VIRTIO BOOTENV_SHARED_BLKDEV(virtio) +#define BOOTENV_RUN_VIRTIO_INIT "run virtio_init; " +#define BOOTENV_SET_VIRTIO_NEED_INIT "virtio_need_init=; " +#define BOOTENV_SHARED_VIRTIO \ + "virtio_init=" \ + "if ${virtio_need_init}; then " \ + "virtio_need_init=false; " \ + "virtio scan; " \ + "fi\0" \ + \ + "virtio_boot=" \ + BOOTENV_RUN_PCI_ENUM \ + BOOTENV_RUN_VIRTIO_INIT \ + BOOTENV_SHARED_BLKDEV_BODY(virtio) #define BOOTENV_DEV_VIRTIO BOOTENV_DEV_BLKDEV #define BOOTENV_DEV_NAME_VIRTIO BOOTENV_DEV_NAME_BLKDEV #else +#define BOOTENV_RUN_VIRTIO_INIT +#define BOOTENV_SET_VIRTIO_NEED_INIT #define BOOTENV_SHARED_VIRTIO #define BOOTENV_DEV_VIRTIO \ BOOT_TARGET_DEVICES_references_VIRTIO_without_CONFIG_CMD_VIRTIO @@ -350,7 +364,7 @@ #define BOOTENV_DEV_DHCP(devtypeu, devtypel, instance) \ "bootcmd_dhcp=" \ BOOTENV_RUN_NET_USB_START \ - BOOTENV_RUN_NET_PCI_ENUM \ + BOOTENV_RUN_PCI_ENUM \ "if dhcp ${scriptaddr} ${boot_script_dhcp}; then " \ "source ${scriptaddr}; " \ "fi;" \ @@ -369,7 +383,7 @@ #define BOOTENV_DEV_PXE(devtypeu, devtypel, instance) \ "bootcmd_pxe=" \ BOOTENV_RUN_NET_USB_START \ - BOOTENV_RUN_NET_PCI_ENUM \ + BOOTENV_RUN_PCI_ENUM \ "dhcp; " \ "if pxe get; then " \ "pxe boot; " \ @@ -465,6 +479,7 @@ "distro_bootcmd=" BOOTENV_SET_SCSI_NEED_INIT \ BOOTENV_SET_NVME_NEED_INIT \ BOOTENV_SET_IDE_NEED_INIT \ + BOOTENV_SET_VIRTIO_NEED_INIT \ "for target in ${boot_targets}; do " \ "run bootcmd_${target}; " \ "done\0"