From: Gerd Hoffmann <kraxel@redhat.com>
To: Kevin O'Connor <kevin@koconnor.net>
Cc: seabios@seabios.org, qemu-devel@nongnu.org,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [SeaBIOS] [PATCH 07/18] virtio: add version 1.0 read/write macros
Date: Mon, 29 Jun 2015 15:46:54 +0200 [thread overview]
Message-ID: <1435585614.30958.25.camel@redhat.com> (raw)
In-Reply-To: <20150629130229.GB30040@morn.localdomain>
On Mo, 2015-06-29 at 09:02 -0400, Kevin O'Connor wrote:
> On Mon, Jun 29, 2015 at 10:53:29AM +0200, Gerd Hoffmann wrote:
> > Add macros to read/write registers of virtio-1.0 regions.
> >
> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > ---
> > src/hw/virtio-pci.h | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 76 insertions(+)
> >
> > diff --git a/src/hw/virtio-pci.h b/src/hw/virtio-pci.h
> > index 893a7dd..e1d8b3e 100644
> > --- a/src/hw/virtio-pci.h
> > +++ b/src/hw/virtio-pci.h
> > @@ -111,6 +111,82 @@ struct vp_device {
> > struct vp_cap common, notify, isr, device;
> > };
> >
> > +#define vp_modern_read(_cap, _struct, _field, _var) { \
> > + u32 addr = _cap.addr; \
> > + addr += offsetof(_struct, _field); \
>
> Wouldn't this make more sense if the bulk of the code was in a
> function?
The idea is that 'sizeof((_struct *)0)->_field)' evaluates to a
compile-time constant, so gcc can optimize away the bulk of the #define.
Also we don't have to use u64 for _var then (except when it actually is
a 64bit value).
But having 'vp_modern_read(..., var)' in the code instead of 'var =
vp_modern_read(...)' isn't that nice indeed.
> > + if (_cap.is_io) { \
> > + switch (sizeof(((_struct *)0)->_field)) { \
> > + case 8: \
> > + _var = inl(addr); \
> > + _var |= (u64)inl(addr+4) << 32; \
> > + break; \
>
> It didn't look like there were any 64bit fields defined, but maybe I
> missed something.
The is a single one (number of sectors for virtio-blk disks).
cheers,
Gerd
next prev parent reply other threads:[~2015-06-29 13:47 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-29 8:53 [Qemu-devel] [PATCH 00/18] virtio: add version 1.0 support Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 01/18] pci: allow to loop over capabilities Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 02/18] virtio: run drivers in 32bit mode Gerd Hoffmann
2015-07-03 6:45 ` Paolo Bonzini
2015-07-03 7:12 ` [Qemu-devel] [SeaBIOS] " Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 03/18] virtio: add struct vp_device Gerd Hoffmann
2015-06-29 12:48 ` [Qemu-devel] [SeaBIOS] " Kevin O'Connor
2015-06-29 13:33 ` Gerd Hoffmann
2015-06-30 6:31 ` Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 04/18] virtio: pass struct pci_device to vp_init_simple Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 05/18] virtio: add version 1.0 structs and #defines Gerd Hoffmann
2015-06-29 13:19 ` [Qemu-devel] [SeaBIOS] " Kevin O'Connor
2015-06-29 13:35 ` Gerd Hoffmann
2015-06-29 14:21 ` Kevin O'Connor
2015-06-29 8:53 ` [Qemu-devel] [PATCH 06/18] virtio: find version 1.0 virtio capabilities Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 07/18] virtio: add version 1.0 read/write macros Gerd Hoffmann
2015-06-29 13:02 ` [Qemu-devel] [SeaBIOS] " Kevin O'Connor
2015-06-29 13:46 ` Gerd Hoffmann [this message]
2015-06-29 14:14 ` Kevin O'Connor
2015-06-29 8:53 ` [Qemu-devel] [PATCH 08/18] virtio: make features 64bit, support version 1.0 features Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 09/18] virtio: add version 1.0 support to vp_{get, set}_status Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 10/18] virtio: add version 1.0 support to vp_get_isr Gerd Hoffmann
2015-06-29 14:00 ` [Qemu-devel] [SeaBIOS] " Kevin O'Connor
2015-06-29 14:33 ` Gerd Hoffmann
2015-06-29 14:36 ` Kevin O'Connor
2015-06-29 8:53 ` [Qemu-devel] [PATCH 11/18] virtio: add version 1.0 support to vp_reset Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 12/18] virtio: add version 1.0 support to vp_notify Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 13/18] virtio: remove unused vp_del_vq Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 14/18] virtio: add version 1.0 support to vp_find_vq Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 15/18] virtio-scsi: fix initialization for version 1.0 Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 16/18] virtio-blk: " Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 17/18] virtio: use version 1.0 if available (flip the big switch) Gerd Hoffmann
2015-06-29 8:53 ` [Qemu-devel] [PATCH 18/18] virtio: also probe version 1.0 pci ids Gerd Hoffmann
2015-06-29 14:26 ` [Qemu-devel] [SeaBIOS] [PATCH 00/18] virtio: add version 1.0 support Kevin O'Connor
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=1435585614.30958.25.camel@redhat.com \
--to=kraxel@redhat.com \
--cc=kevin@koconnor.net \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=seabios@seabios.org \
/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.