All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Liran Alon <liran.alon@oracle.com>
Cc: nikita.leshchenko@oracle.com, ehabkost@redhat.com,
	qemu-devel@nongnu.org, rth@twiddle.net
Subject: Re: [PATCH v2 00/16]: hw/i386/vmport: Bug fixes and improvements
Date: Wed, 11 Mar 2020 02:29:16 -0400	[thread overview]
Message-ID: <20200311022120-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <b7e638a0-959a-4db0-7056-a0ab490a404b@oracle.com>

On Wed, Mar 11, 2020 at 12:19:59AM +0200, Liran Alon wrote:
> 
> On 11/03/2020 0:00, Michael S. Tsirkin wrote:
> > On Tue, Mar 10, 2020 at 11:57:49PM +0200, Liran Alon wrote:
> > > On 10/03/2020 23:44, Michael S. Tsirkin wrote:
> > > > On Tue, Mar 10, 2020 at 02:29:42PM -0700, Liran Alon wrote:
> > > > > On 10/03/2020 22:56, Michael S. Tsirkin wrote:
> > > > > > On Tue, Mar 10, 2020 at 08:09:09PM +0200, Liran Alon wrote:
> > > > > > > On 10/03/2020 19:44, Michael S. Tsirkin wrote:
> > > > > > > > On Tue, Mar 10, 2020 at 06:53:16PM +0200, Liran Alon wrote:
> > > > > > > > > Hi,
> > > > > > > > > 
> > > > > > > > > This series aims to fix several bugs in VMPort and improve it by supporting
> > > > > > > > > more VMPort commands and make command results more configurable to
> > > > > > > > > user via QEMU command-line.
> > > > > > > > > 
> > > > > > > > > This functionality was proven to be useful to run various VMware VMs
> > > > > > > > > when attempting to run them as-is on top of QEMU/KVM.
> > > > > > > > > 
> > > > > > > > > For more details, see commit messages.
> > > > > > > > Well two versions in one day and some review comments weren't addressed.
> > > > > > > There is a single review comment that wasn't addressed which is replacing an
> > > > > > > enum with a comment. And I explicitly mentioned that it's because I want
> > > > > > > additional opinion on this.
> > > > > > > I don't see why such a small thing should block review for 15 patches...
> > > > > > > All the rest of the comments (Which were great) have been addressed. Unless
> > > > > > > I have mistakenly missed something, which please point it out if I did.
> > > > > > OK I just took a quick peek, two things quickly jumped out at me.
> > > > > Thanks for having a look.
> > > > > > version property really should be a boolean and have some documentation
> > > > > > saying what functionality enables.
> > > > > I thought that having a version number approach is more generic and easy to
> > > > > maintain going forward.
> > > > > If I understand correctly, this is also the approach taken by qxl & qxl-vga.
> > > > > 
> > > > > The more elaborate alternative could have been introducing compat_flags (As
> > > > > PVSCSI does) but it seems like it will pollute the property space with a lot
> > > > > of useless VMPort properties.
> > > > > (E.g. x-read-eax-bug, x-no-report-unsupported-cmd, x-no-report-vmx-type and
> > > > > etc.).
> > > > > 
> > > > > What is the advantage of having a boolean such as "x-vmport-v2" instead of
> > > > > having a single "version" property?
> > > > It's not clear what should happen going forward. Let's say version is
> > > > incremented again. This then becomes challenging for downstreams to
> > > > backport.
> > > As all conditions are in the form of "if (s->version > X)" then incrementing
> > > version from 1 to 2 doesn't break any condition of "if (s->version > 1)".
> > > What is the challenge of backporting I'm missing?
> > the challenge is figuring out which parts does version apply to.
> > It might be easy if there's just code, harder if there's
> > also data, etc.
> You mean things such as the following?
> s->some_field = (s->version > X) ? A : B;
> 
> True that it could be a bit more difficult to spot.
> 
> > > > > Will it suffice if I would just add documentation above "version" property
> > > > > on what is was the functionality in "version==1"?
> > > > > (Though, it's just easy to scan the vmport.c code for if's involving
> > > > > ">version"... "version" is more of an internal field for machine-type
> > > > > compatibility and not really meant to be used by user)
> > > > > 
> > > > > Which approach do you prefer?
> > > > I just dislike versions, they are hard to maintain.
> > > > 
> > > > Individual ones is cleanest imho. Self-documenting.
> > > I agree. That's the PVSCSI approach of compat_flags. Have many properties
> > > but each define bit in a compat_flags that specifies behavior.
> > > The disadvantage it have is that it over-complicates code and introduce many
> > > properties that will never be used as it's just for internal binding to
> > > machine-type.
> > > > But if not, I'd do something like "x-vmport-fixes" and
> > > > set bits there for each bugfix.
> > > Hmm this could a nice and simple approach.
> > > Will it be OK then in this case to define "x-vmport-fixes" value in
> > > hw_compat_4_2[] to a hard-coded value (e.g. "20") without directly encoding
> > > each individual bit via vmport.h constants?
> > Well how are you going to check a specific flag then?
> In the code itself I will have constants of course.
> I meant just in hw_compat_4_2[] machine-type compat entry because the
> bitmask value there should be specified as a string value.
> > 
> > > I will note though that it seems this "x-vmport-fixes" bitmap seems to be
> > > the first of it's kind. But I'm OK with this approach.
> So just to be clear before implementing your suggesting approach, this
> doesn't bother you right?

So it would be like this:

{
	"x-vmport-fixes" : "0x7" /* VMPORT_FOO | VMPORT_BAR */
}

I prefer DEFINE_PROP_BIT myself. But this version is not too terrible I
think.

-- 
MST



  reply	other threads:[~2020-03-11  6:31 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-10 16:53 [PATCH v2 00/16]: hw/i386/vmport: Bug fixes and improvements Liran Alon
2020-03-10 16:53 ` [PATCH v2 01/16] hw/i386/vmport: Add device properties Liran Alon
2020-03-10 16:53 ` [PATCH v2 02/16] hw/i386/vmport: Add compatability version field Liran Alon
2020-03-10 16:53 ` [PATCH v2 03/16] hw/i386/vmport: Propagate IOPort read to vCPU EAX register Liran Alon
2020-03-10 16:53 ` [PATCH v2 04/16] hw/i386/vmport: Set EAX to -1 on failed and unsupported commands Liran Alon
2020-03-10 16:53 ` [PATCH v2 05/16] hw/i386/vmport: Introduce vmx-version property Liran Alon
2020-03-10 16:53 ` [PATCH v2 06/16] hw/i386/vmport: Report VMX type in CMD_GETVERSION Liran Alon
2020-03-10 16:53 ` [PATCH v2 07/16] hw/i386/vmport: Introduce vmport.h Liran Alon
2020-03-10 16:53 ` [PATCH v2 08/16] hw/i386/vmport: Define enum for all commands Liran Alon
2020-03-10 16:53 ` [PATCH v2 09/16] hw/i386/vmport: Add support for CMD_GETBIOSUUID Liran Alon
2020-03-10 16:53 ` [PATCH v2 10/16] hw/i386/vmport: Add support for CMD_GETTIME Liran Alon
2020-03-10 16:53 ` [PATCH v2 11/16] hw/i386/vmport: Add support for CMD_GETTIMEFULL Liran Alon
2020-03-10 16:53 ` [PATCH v2 12/16] hw/i386/vmport: Add support for CMD_GET_VCPU_INFO Liran Alon
2020-03-10 16:53 ` [PATCH v2 13/16] hw/i386/vmport: Allow x2apic without IR Liran Alon
2020-03-10 16:53 ` [PATCH v2 14/16] i386/cpu: Store LAPIC bus frequency in CPU structure Liran Alon
2020-03-10 16:53 ` [PATCH v2 15/16] hw/i386/vmport: Add support for CMD_GETHZ Liran Alon
2020-03-10 16:53 ` [PATCH v2 16/16] hw/i386/vmport: Assert vmport initialized before registering commands Liran Alon
2020-03-10 17:44 ` [PATCH v2 00/16]: hw/i386/vmport: Bug fixes and improvements Michael S. Tsirkin
2020-03-10 18:09   ` Liran Alon
2020-03-10 20:56     ` Michael S. Tsirkin
2020-03-10 21:29       ` Liran Alon
2020-03-10 21:44         ` Michael S. Tsirkin
2020-03-10 21:57           ` Liran Alon
2020-03-10 22:00             ` Michael S. Tsirkin
2020-03-10 22:19               ` Liran Alon
2020-03-11  6:29                 ` Michael S. Tsirkin [this message]
2020-03-10 19:12 ` no-reply

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=20200311022120-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=liran.alon@oracle.com \
    --cc=nikita.leshchenko@oracle.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.