From: Paolo Bonzini <pbonzini@redhat.com>
To: Dmitry Fleytman <dmitry.fleytman@ravellosystems.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
Alex Fishman <alex.fishman@ravellosystems.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
yvugenfi@redhat.com, Izik Eidus <izik.eidus@ravellosystems.com>,
qemu-devel@nongnu.org, Yan Vugenfirer <yan@daynix.com>,
Dmitry Fleytman <dmitry@daynix.com>
Subject: Re: [Qemu-devel] [PATCH 3/5] Header with various utility functions shared by VMWARE SCSI and network devices
Date: Thu, 15 Mar 2012 10:56:19 +0100 [thread overview]
Message-ID: <4F61BCC3.6020208@redhat.com> (raw)
In-Reply-To: <1331802150-12183-4-git-send-email-dmitry.fleytman@ravellosystems.com>
Il 15/03/2012 10:02, Dmitry Fleytman ha scritto:
> Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
> Signed-off-by: Yan Vugenfirer <yan@daynix.com>
> ---
> hw/vmware_utils.h | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 122 insertions(+), 0 deletions(-)
> create mode 100644 hw/vmware_utils.h
>
> diff --git a/hw/vmware_utils.h b/hw/vmware_utils.h
> new file mode 100644
> index 0000000..a86e691
> --- /dev/null
> +++ b/hw/vmware_utils.h
> @@ -0,0 +1,122 @@
> +/*
> + * QEMU VMWARE paravirtual devices - auxiliary code
> + *
> + * Copyright (c) 2012 Ravello Systems LTD (http://ravellosystems.com)
> + *
> + * Developed by Daynix Computing LTD (http://www.daynix.com)
> + *
> + * Authors:
> + * Dmitry Fleytman <dmitry@daynix.com>
> + * Yan Vugenfirer <yan@daynix.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + *
> + */
> +
> +#ifndef VMWARE_UTILS_H
> +#define VMWARE_UTILS_H
> +
> +/* Shared memory access functions with byte swap support */
> +static inline void
> +vmw_shmem_read(target_phys_addr_t addr, void *buf, int len)
> +{
> + DSHPRINTF("SHMEM r: %" PRIx64 ", len: %d to %p", addr, len, buf);
Please add an #ifndef DSHPRINTF that defines it to nothing.
> + cpu_physical_memory_read(addr, buf, len);
> +}
> +
> +static inline void
> +vmw_shmem_write(target_phys_addr_t addr, void *buf, int len)
> +{
> + DSHPRINTF("SHMEM w: %" PRIx64 ", len: %d to %p", addr, len, buf);
> + cpu_physical_memory_write(addr, buf, len);
> +}
> +
> +static inline void
> +vmw_shmem_rw(target_phys_addr_t addr, void *buf, int len, int is_write)
> +{
> + DSHPRINTF("SHMEM r/w: %" PRIx64 ", len: %d (to %p), is write: %d",
> + addr, len, buf, is_write);
> +
> + cpu_physical_memory_rw(addr, buf, len, is_write);
> +}
> +
> +static inline void
> +vmw_shmem_set(target_phys_addr_t addr, uint8 val, int len)
> +{
> + int i;
> + DSHPRINTF("SHMEM set: %" PRIx64 ", len: %d (value 0x%X)", addr, len, val);
> +
> + for (i = 0; i < len; i++) {
> + cpu_physical_memory_write(addr + i, &val, 1);
> + }
> +}
> +
> +static inline uint32_t
> +vmw_shmem_ld8(target_phys_addr_t addr)
> +{
> + uint8_t res = ldub_phys(addr);
> + DSHPRINTF("SHMEM load8: %" PRIx64 " (value 0x%X)", addr, res);
> + return res;
> +}
> +
> +static inline void
> +vmw_shmem_st8(target_phys_addr_t addr, uint8_t value)
> +{
> + DSHPRINTF("SHMEM store8: %" PRIx64 " (value 0x%X)", addr, value);
> + stb_phys(addr, value);
> +}
> +
> +static inline uint32_t
> +vmw_shmem_ld16(target_phys_addr_t addr)
> +{
> + uint16_t res = lduw_le_phys(addr);
> + DSHPRINTF("SHMEM load16: %" PRIx64 " (value 0x%X)", addr, res);
> + return res;
> +}
> +
> +static inline void
> +vmw_shmem_st16(target_phys_addr_t addr, uint16_t value)
> +{
> + DSHPRINTF("SHMEM store16: %" PRIx64 " (value 0x%X)", addr, value);
> + stw_le_phys(addr, value);
> +}
> +
> +static inline uint32_t
> +vmw_shmem_ld32(target_phys_addr_t addr)
> +{
> + uint32_t res = ldl_le_phys(addr);
> + DSHPRINTF("SHMEM load32: %" PRIx64 " (value 0x%X)", addr, res);
> + return res;
> +}
> +
> +static inline void
> +vmw_shmem_st32(target_phys_addr_t addr, uint32_t value)
> +{
> + DSHPRINTF("SHMEM store32: %" PRIx64 " (value 0x%X)", addr, value);
> + stl_le_phys(addr, value);
> +}
> +
> +static inline uint64_t
> +vmw_shmem_ld64(target_phys_addr_t addr)
> +{
> + uint64_t res = ldq_le_phys(addr);
> + DSHPRINTF("SHMEM load64: %" PRIx64 " (value %" PRIx64 ")", addr, res);
> + return res;
> +}
> +
> +static inline void
> +vmw_shmem_st64(target_phys_addr_t addr, uint64_t value)
> +{
> + DSHPRINTF("SHMEM store64: %" PRIx64 " (value %" PRIx64 ")", addr, value);
> + stq_le_phys(addr, value);
> +}
> +
> +/* MACROS for simplification of operations on array-style registers */
> +#define IS_MULTIREG_ADDR(addr, base, cnt, regsize) \
> + (((addr) >= (base)) && ((addr) < (base) + (cnt) * (regsize)))
> +
> +#define MULTIREG_IDX_BY_ADDR(addr, base, regsize) \
> + (((addr) - (base)) / (regsize))
> +
> +#endif
Otherwise looks good.
Paolo
next prev parent reply other threads:[~2012-03-15 9:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-15 9:02 [Qemu-devel] [PATCH 0/5] VMWare PVSCSI paravirtual device implementation Dmitry Fleytman
2012-03-15 9:02 ` [Qemu-devel] [PATCH 1/5] Utility function strpadcpy() added Dmitry Fleytman
2012-03-15 9:53 ` Paolo Bonzini
2012-03-18 9:22 ` Dmitry Fleytman
2012-03-15 9:02 ` [Qemu-devel] [PATCH 2/5] Vendor name and product name parameters for SCSI devices Options "vendor_name" and "product_name" added for SCSI disks Dmitry Fleytman
2012-03-15 9:55 ` Paolo Bonzini
2012-03-18 9:24 ` Dmitry Fleytman
2012-03-15 9:02 ` [Qemu-devel] [PATCH 3/5] Header with various utility functions shared by VMWARE SCSI and network devices Dmitry Fleytman
2012-03-15 9:56 ` Paolo Bonzini [this message]
2012-03-18 9:23 ` Dmitry Fleytman
2012-03-15 9:02 ` [Qemu-devel] [PATCH 4/5] PVCSI paravirtualized device implementation Dmitry Fleytman
2012-03-15 9:02 ` [Qemu-devel] [PATCH 5/5] PVSCSI paravirtualized device integration Bus type "pvscsi" added Dmitry Fleytman
2012-03-15 9:46 ` Paolo Bonzini
2012-03-18 9:15 ` Dmitry Fleytman
2012-03-15 11:47 ` [Qemu-devel] [PATCH 0/5] VMWare PVSCSI paravirtual device implementation Stefan Hajnoczi
2012-03-15 11:54 ` Paolo Bonzini
2012-03-15 11:54 ` Daniel P. Berrange
2012-03-15 12:29 ` Avi Kivity
2012-03-18 8:31 ` Gerhard Wiesinger
2012-03-18 8:32 ` Gerhard Wiesinger
2012-03-18 12:33 ` Evgeny Budilovsky
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=4F61BCC3.6020208@redhat.com \
--to=pbonzini@redhat.com \
--cc=alex.fishman@ravellosystems.com \
--cc=aliguori@us.ibm.com \
--cc=dmitry.fleytman@ravellosystems.com \
--cc=dmitry@daynix.com \
--cc=izik.eidus@ravellosystems.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=yan@daynix.com \
--cc=yvugenfi@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 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.