qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Sergio Lopez <slp@redhat.com>
Cc: ehabkost@redhat.com, kvm@vger.kernel.org, lersek@redhat.com,
	mtosatti@redhat.com, qemu-devel@nongnu.org, kraxel@redhat.com,
	pbonzini@redhat.com, imammedo@redhat.com, philmd@redhat.com,
	rth@twiddle.net
Subject: Re: [PATCH v4 8/8] hw/i386: Introduce the microvm machine type
Date: Tue, 24 Sep 2019 09:28:09 -0400	[thread overview]
Message-ID: <20190924092435-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20190924124433.96810-9-slp@redhat.com>

On Tue, Sep 24, 2019 at 02:44:33PM +0200, Sergio Lopez wrote:
> +static void microvm_fix_kernel_cmdline(MachineState *machine)
> +{
> +    X86MachineState *x86ms = X86_MACHINE(machine);
> +    BusState *bus;
> +    BusChild *kid;
> +    char *cmdline;
> +
> +    /*
> +     * Find MMIO transports with attached devices, and add them to the kernel
> +     * command line.
> +     *
> +     * Yes, this is a hack, but one that heavily improves the UX without
> +     * introducing any significant issues.
> +     */
> +    cmdline = g_strdup(machine->kernel_cmdline);
> +    bus = sysbus_get_default();
> +    QTAILQ_FOREACH(kid, &bus->children, sibling) {
> +        DeviceState *dev = kid->child;
> +        ObjectClass *class = object_get_class(OBJECT(dev));
> +
> +        if (class == object_class_by_name(TYPE_VIRTIO_MMIO)) {
> +            VirtIOMMIOProxy *mmio = VIRTIO_MMIO(OBJECT(dev));
> +            VirtioBusState *mmio_virtio_bus = &mmio->bus;
> +            BusState *mmio_bus = &mmio_virtio_bus->parent_obj;
> +
> +            if (!QTAILQ_EMPTY(&mmio_bus->children)) {
> +                gchar *mmio_cmdline = microvm_get_mmio_cmdline(mmio_bus->name);
> +                if (mmio_cmdline) {
> +                    char *newcmd = g_strjoin(NULL, cmdline, mmio_cmdline, NULL);
> +                    g_free(mmio_cmdline);
> +                    g_free(cmdline);
> +                    cmdline = newcmd;
> +                }
> +            }
> +        }
> +    }
> +
> +    fw_cfg_modify_i32(x86ms->fw_cfg, FW_CFG_CMDLINE_SIZE, strlen(cmdline) + 1);
> +    fw_cfg_modify_string(x86ms->fw_cfg, FW_CFG_CMDLINE_DATA, cmdline);
> +}

Can we rearrange this somewhat? Maybe the mmio constructor
would format the device description and add to some list,
and then microvm would just get stuff from that list
and add it to kernel command line?
This way it can also be controlled by a virtio-mmio property, so
e.g. you can disable it per device if you like.
In particular, this seems like a handy trick for any machine type
using mmio.

-- 
MST


  parent reply	other threads:[~2019-09-24 14:20 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-24 12:44 [PATCH v4 0/8] Introduce the microvm machine type Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 1/8] hw/i386: Factorize PVH related functions Sergio Lopez
2019-09-24 13:18   ` Philippe Mathieu-Daudé
2019-09-25  6:03     ` Sergio Lopez
2019-09-25  8:36   ` Stefano Garzarella
2019-09-25  9:00     ` Sergio Lopez
2019-09-25  9:29       ` Stefano Garzarella
2019-09-24 12:44 ` [PATCH v4 2/8] hw/i386: Factorize e820 " Sergio Lopez
2019-09-24 13:20   ` Philippe Mathieu-Daudé
2019-09-24 14:12     ` Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 3/8] hw/virtio: Factorize virtio-mmio headers Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 4/8] hw/i386: split PCMachineState deriving X86MachineState from it Sergio Lopez
2019-09-24 13:40   ` Philippe Mathieu-Daudé
2019-09-25 15:39     ` Philippe Mathieu-Daudé
2019-09-24 12:44 ` [PATCH v4 5/8] fw_cfg: add "modify" functions for all types Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 6/8] roms: add microvm-bios (qboot) as binary and git submodule Sergio Lopez
2019-09-24 13:31   ` Philippe Mathieu-Daudé
2019-09-25  6:09     ` Sergio Lopez
2019-09-24 12:44 ` [PATCH v4 7/8] docs/microvm.txt: document the new microvm machine type Sergio Lopez
2019-09-24 13:10   ` Paolo Bonzini
2019-09-25  5:49     ` Sergio Lopez
2019-09-25  7:57       ` Paolo Bonzini
2019-09-25  8:40         ` Sergio Lopez
2019-09-25  9:22           ` Paolo Bonzini
2019-09-25 11:04             ` Sergio Lopez
2019-09-25 11:20               ` Paolo Bonzini
2019-09-25 15:04     ` Sergio Lopez
2019-09-25 16:46       ` Paolo Bonzini
2019-09-26  6:23         ` Sergio Lopez
2019-09-26  8:58           ` Paolo Bonzini
2019-09-26 10:16             ` Sergio Lopez
2019-09-26 10:21               ` Paolo Bonzini
2019-09-26 12:12                 ` Sergio Lopez
2019-09-25  5:06   ` Gerd Hoffmann
2019-09-25  7:33     ` Sergio Lopez
2019-09-25  8:51       ` Gerd Hoffmann
2019-09-24 12:44 ` [PATCH v4 8/8] hw/i386: Introduce the " Sergio Lopez
2019-09-24 13:12   ` Paolo Bonzini
2019-09-24 13:24     ` Michael S. Tsirkin
2019-09-24 13:34       ` Paolo Bonzini
2019-09-25  5:53     ` Sergio Lopez
2019-09-24 13:28   ` Michael S. Tsirkin [this message]
2019-09-25  5:59     ` Sergio Lopez
2019-10-01  8:56       ` Sergio Lopez
2019-09-25 15:40   ` Philippe Mathieu-Daudé
2019-09-26  6:34     ` Sergio Lopez
2019-09-26  8:59       ` Paolo Bonzini
2019-09-24 13:57 ` [PATCH v4 0/8] " Peter Maydell
2019-09-25  5:51   ` Sergio Lopez
2019-09-25 11:33     ` Philippe Mathieu-Daudé
2019-09-25 12:39       ` Peter Maydell
2019-09-25  7:41 ` David Hildenbrand
2019-09-25  7:58   ` Pankaj Gupta
2019-09-25  8:10   ` Sergio Lopez
2019-09-25  8:16     ` David Hildenbrand
2019-09-25  8:37       ` Pankaj Gupta
2019-09-25  8:26     ` Paolo Bonzini
2019-09-25  8:42       ` Sergio Lopez
2019-09-25  8:44       ` David Hildenbrand
2019-09-25 10:19         ` when to use virtio (was Re: [PATCH v4 0/8] Introduce the microvm machine type) Paolo Bonzini
2019-09-25 10:50           ` David Hildenbrand
2019-09-25 11:24             ` Paolo Bonzini
2019-09-25 11:32               ` David Hildenbrand
2019-09-25  9:12       ` [PATCH v4 0/8] Introduce the microvm machine type Gerd Hoffmann
2019-09-25  9:29         ` Paolo Bonzini
2019-09-25  9:47         ` David Hildenbrand
2019-09-26  7:48 ` Christian Borntraeger
2019-09-26  8:22   ` Sergio Lopez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190924092435-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=lersek@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=slp@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).