From: Rusty Russell <rusty@rustcorp.com.au>
To: "Michael S. Tsirkin" <mst@redhat.com>, linux-kernel@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Subject: Re: [PATCH 1/2] virtio_pci_modern: type-safe io accessors
Date: Mon, 16 Feb 2015 14:22:55 +1030 [thread overview]
Message-ID: <87vbj28qco.fsf@rustcorp.com.au> (raw)
In-Reply-To: <1423977123-10115-1-git-send-email-mst@redhat.com>
"Michael S. Tsirkin" <mst@redhat.com> writes:
> The spec is very clear on this:
>
> 4.1.3.1 Driver Requirements: PCI Device Layout
>
> The driver MUST access each field using the “natural” access method,
> i.e. 32-bit accesses for 32-bit fields, 16-bit accesses for 16-bit
> fields and 8-bit accesses for 8-bit fields.
>
> Add type-safe wrappers to prevent access with incorrect width.
Applied both (for *next* merge window).
Thanks,
Rusty.
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> drivers/virtio/virtio_pci_modern.c | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c
> index 2aa38e5..4e73ef7 100644
> --- a/drivers/virtio/virtio_pci_modern.c
> +++ b/drivers/virtio/virtio_pci_modern.c
> @@ -20,6 +20,43 @@
> #define VIRTIO_PCI_NO_LEGACY
> #include "virtio_pci_common.h"
>
> +/*
> + * Type-safe wrappers for io accesses.
> + * Use these to enforce at compile time the following spec requirement:
> + *
> + * The driver MUST access each field using the “natural” access
> + * method, i.e. 32-bit accesses for 32-bit fields, 16-bit accesses
> + * for 16-bit fields and 8-bit accesses for 8-bit fields.
> + */
> +static inline u8 vp_ioread8(u8 __iomem *addr)
> +{
> + return ioread8(addr);
> +}
> +static inline u16 vp_ioread16 (u16 __iomem *addr)
> +{
> + return ioread16(addr);
> +}
> +
> +static inline u32 vp_ioread32(u32 __iomem *addr)
> +{
> + return ioread32(addr);
> +}
> +
> +static inline void vp_iowrite8(u8 value, u8 __iomem *addr)
> +{
> + iowrite8(value, addr);
> +}
> +
> +static inline void vp_iowrite16(u16 value, u16 __iomem *addr)
> +{
> + iowrite16(value, addr);
> +}
> +
> +static inline void vp_iowrite32(u32 value, u32 __iomem *addr)
> +{
> + iowrite16(value, addr);
> +}
> +
> static void __iomem *map_capability(struct pci_dev *dev, int off,
> size_t minlen,
> u32 align,
> --
> MST
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
WARNING: multiple messages have this Message-ID (diff)
From: Rusty Russell <rusty@rustcorp.com.au>
To: "Michael S. Tsirkin" <mst@redhat.com>, linux-kernel@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Subject: Re: [PATCH 1/2] virtio_pci_modern: type-safe io accessors
Date: Mon, 16 Feb 2015 14:22:55 +1030 [thread overview]
Message-ID: <87vbj28qco.fsf@rustcorp.com.au> (raw)
In-Reply-To: <1423977123-10115-1-git-send-email-mst@redhat.com>
"Michael S. Tsirkin" <mst@redhat.com> writes:
> The spec is very clear on this:
>
> 4.1.3.1 Driver Requirements: PCI Device Layout
>
> The driver MUST access each field using the “natural” access method,
> i.e. 32-bit accesses for 32-bit fields, 16-bit accesses for 16-bit
> fields and 8-bit accesses for 8-bit fields.
>
> Add type-safe wrappers to prevent access with incorrect width.
Applied both (for *next* merge window).
Thanks,
Rusty.
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> drivers/virtio/virtio_pci_modern.c | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c
> index 2aa38e5..4e73ef7 100644
> --- a/drivers/virtio/virtio_pci_modern.c
> +++ b/drivers/virtio/virtio_pci_modern.c
> @@ -20,6 +20,43 @@
> #define VIRTIO_PCI_NO_LEGACY
> #include "virtio_pci_common.h"
>
> +/*
> + * Type-safe wrappers for io accesses.
> + * Use these to enforce at compile time the following spec requirement:
> + *
> + * The driver MUST access each field using the “natural” access
> + * method, i.e. 32-bit accesses for 32-bit fields, 16-bit accesses
> + * for 16-bit fields and 8-bit accesses for 8-bit fields.
> + */
> +static inline u8 vp_ioread8(u8 __iomem *addr)
> +{
> + return ioread8(addr);
> +}
> +static inline u16 vp_ioread16 (u16 __iomem *addr)
> +{
> + return ioread16(addr);
> +}
> +
> +static inline u32 vp_ioread32(u32 __iomem *addr)
> +{
> + return ioread32(addr);
> +}
> +
> +static inline void vp_iowrite8(u8 value, u8 __iomem *addr)
> +{
> + iowrite8(value, addr);
> +}
> +
> +static inline void vp_iowrite16(u16 value, u16 __iomem *addr)
> +{
> + iowrite16(value, addr);
> +}
> +
> +static inline void vp_iowrite32(u32 value, u32 __iomem *addr)
> +{
> + iowrite16(value, addr);
> +}
> +
> static void __iomem *map_capability(struct pci_dev *dev, int off,
> size_t minlen,
> u32 align,
> --
> MST
next prev parent reply other threads:[~2015-02-16 3:52 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-15 5:31 [PATCH 1/2] virtio_pci_modern: type-safe io accessors Michael S. Tsirkin
2015-02-15 5:31 ` Michael S. Tsirkin
2015-02-15 5:31 ` [PATCH 2/2] virtio_pci_modern: switch to " Michael S. Tsirkin
2015-02-15 5:31 ` Michael S. Tsirkin
2015-02-16 3:52 ` Rusty Russell [this message]
2015-02-16 3:52 ` [PATCH 1/2] virtio_pci_modern: " Rusty Russell
2015-02-16 4:31 ` Rusty Russell
2015-02-16 4:31 ` Rusty Russell
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=87vbj28qco.fsf@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=virtualization@lists.linux-foundation.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.