[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v9 08/13] Add IOREQ_TYPE_VMWARE_PORT



> -----Original Message-----
> From: Jan Beulich [mailto:JBeulich@xxxxxxxx]
> Sent: 26 February 2015 08:08
> To: Don Slutz
> Cc: Aravind Gopalakrishnan; Suravee Suthikulpanit; Andrew Cooper; Ian
> Campbell; Paul Durrant; George Dunlap; Ian Jackson; Stefano Stabellini; Eddie
> Dong; Jun Nakajima; Kevin Tian; xen-devel@xxxxxxxxxxxxx; Boris Ostrovsky;
> Konrad Rzeszutek Wilk; Keir (Xen.org); Tim (Xen.org)
> Subject: Re: [PATCH v9 08/13] Add IOREQ_TYPE_VMWARE_PORT
> 
> >>> On 25.02.15 at 21:20, <dslutz@xxxxxxxxxxx> wrote:
> > On 02/24/15 10:34, Jan Beulich wrote:
> >>>>> On 17.02.15 at 00:05, <dslutz@xxxxxxxxxxx> wrote:
> >>> @@ -501,22 +542,50 @@ static void hvm_free_ioreq_gmfn(struct
> domain *d, unsigned long gmfn)
> >>>      clear_bit(i, &d->arch.hvm_domain.ioreq_gmfn.mask);
> >>>  }
> >>>
> >>> -static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s,
> bool_t buf)
> >>> +static void hvm_unmap_ioreq_page(struct hvm_ioreq_server *s, int
> buf)
> >>>  {
> >>> -    struct hvm_ioreq_page *iorp = buf ? &s->bufioreq : &s->ioreq;
> >>> +    struct hvm_ioreq_page *iorp = NULL;
> >>> +
> >>> +    switch ( buf )
> >>> +    {
> >>> +    case 0:
> >>> +        iorp = &s->ioreq;
> >>> +        break;
> >>> +    case 1:
> >>> +        iorp = &s->bufioreq;
> >>> +        break;
> >>> +    case 2:
> >>> +        iorp = &s->vmport_ioreq;
> >>> +        break;
> >>> +    }
> >>
> >> These literals should become an enum.
> >>
> >
> > Paul Durrant asked for #defined values.  So it is not clear which way to
> > go. Will wait for response.
> 
> Obviously either would be fine. An enum has the potential advantage
> of the compiler being able to check switch statements for completeness
> (albeit there are cases where this ends up being a disadvantage).
> 

I'm fine with an enum... just not with (repeated) magic numbers in the code.

[snip]
> > Some background.  When Julien Grall added 2, this was said:
> >
> > Keir Fraser
> > [...]
> > They were almost certainly used for representing R-M-W ALU operations
> back
> > in the days of the old IO emulator, very long ago. Still, there''s no
> > harm in
> > leaving them unused.
> > [...]
> > I did find the old defn:
> >
> > dcs-xen-54:~/xen>git show 4ff8936 | grep IOREQ_TYPE_
> > #define IOREQ_TYPE_PIO          0 /* pio */
> > #define IOREQ_TYPE_COPY         1 /* mmio ops */
> > #define IOREQ_TYPE_AND          2
> > #define IOREQ_TYPE_OR           3
> > #define IOREQ_TYPE_XOR          4
> > #define IOREQ_TYPE_XCHG         5
> > #define IOREQ_TYPE_ADD          6
> > [...]
> > Which matches what Keir Fraser said.
> >
> > I did not find why Paul Durrant did not use 9.  I can only find it as 2
> > in all Paul's patch sets.  Which is closely connected to:
> >
> >          BUILD_BUG_ON(IOREQ_TYPE_PIO != HVMOP_IO_RANGE_PORT);
> >          BUILD_BUG_ON(IOREQ_TYPE_COPY !=
> HVMOP_IO_RANGE_MEMORY);
> >          BUILD_BUG_ON(IOREQ_TYPE_PCI_CONFIG !=
> HVMOP_IO_RANGE_PCI);
> >
> > (a new hyper call arg).  This also did not add a hole in "range" so
> > Paul Durrant did not have to check for a "range" hole.
> >
> > So I did just like Paul Durrant did.  He also approved the patch with
> > this number in QEMU.  Since this is now in upstream QEMU, changing it at
> > this time is a slower process.  Since the only time QEMU uses its
> > version is when Xen header files are missing, I do not see how a QEMU
> > built with its version would be usable as a QEMU for Xen.  So I am
> > happy to change to a new number like 9.
> 
> Yes please. I'm not saying we absolutely have to correct the one
> Paul added (unless we learn it causes problems), but I think we
> should avoid making the same (even if only potential) mistake twice.
> Of course it would help to get insight from Paul (now Cc-ed) here.
> 

I used the hole because I really did not think anyone would ever expect to use 
an ancient emulator against a recent Xen. Given there has been no fallout I 
don't see why we can't use the hole.

  Paul

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.