From: Andrew Jones <drjones@redhat.com>
To: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: kvm@vger.kernel.org, pbonzini@redhat.com, mst@redhat.com,
agordeev@redhat.com
Subject: Re: [kvm-unit-tests PATCH v2 01/10] asm-generic: add portio accessors to io.h
Date: Mon, 18 Jan 2016 14:52:34 +0100 [thread overview]
Message-ID: <20160118135234.GC4075@hawk.localdomain> (raw)
In-Reply-To: <20160115213409.GA12949@potion.brq.redhat.com>
On Fri, Jan 15, 2016 at 10:34:09PM +0100, Radim Krčmář wrote:
> 2016-01-15 17:51+0100, Andrew Jones:
> > Signed-off-by: Andrew Jones <drjones@redhat.com>
> > ---
> > diff --git a/lib/asm-generic/io.h b/lib/asm-generic/io.h
> > @@ -152,6 +152,58 @@ static inline u64 __bswap64(u64 x)
> > +#ifndef PCI_IOBASE
> > +#define PCI_IOBASE ((void *)0)
> > +#endif
> > +
> > +#ifndef inb
> > +#define inb inb
>
> (I consider this repeated pattern to be very ugly, even by C standards.)
>
> > +static inline u8 inb(unsigned long addr)
> > +{
> > + return readb(PCI_IOBASE + addr);
> > +}
>
> My first reaction was "throw this abomination out!", but Drew explained
> that in*/out* is here because we'll also generalize the x86 PCI code
> (which uses PIO and MMIO) and that Linux has the same code.
>
> arm, arm64, and unicore32 define PCI_IOBASE in Linux. I didn't figure
> out why they want to use a PIO based abstraction for MMIO, so the
> interface is fine with me as long as
Having these aliases for read*/write* are less evil than attempting to
share code between arm and x86 with a bunch of #ifdefs. As I didn't yet
write a shared pci-testdev driver though, then this patch can be dropped
for now, if you'd prefer. However at some point it may need to come back.
> - functions are hidden behind a single #ifndef, like ARCH_HAS_PORT_IO.
> (Ideally defined as part of global configuration, because it's harder
> to fail that way.)
I prefer to stay consistent with Linux. It's ugly, but we already have
the ugliness for read* and write*.
> - "unsigned long addr" is changed to "u16 port";
> x86 ought to have that and we should use different names if we need
> different types, because behavior couldn't be the same then.
in*/out* should be portio for x86, and just aliases for read*/write*
mmio for other architectures. For mmio to work we may need 'unsigned long
addr', but that shouldn't stop x86 from defining its version as 'u16 port'.
(Although Linux defines it as 'int' actually).
It does appear that in Linux arch/x86/include/asm/io.h doesn't include
asm-generic/io.h. So, if you'd prefer x86 to not include it here either,
then we can drop the inclusion and the '#define inb inb' type stuff from
lib/x86/asm/io.h.
Thanks,
drew
next prev parent reply other threads:[~2016-01-18 13:52 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-15 16:51 [kvm-unit-tests PATCH v2 00/10] share pci-testdev with the framework Andrew Jones
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 01/10] asm-generic: add portio accessors to io.h Andrew Jones
2016-01-15 21:34 ` Radim Krčmář
2016-01-18 13:52 ` Andrew Jones [this message]
2016-01-18 16:40 ` Radim Krčmář
2016-01-18 17:02 ` Andrew Jones
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 02/10] x86: move io.h to asm Andrew Jones
2016-01-15 21:39 ` Radim Krčmář
2016-01-18 13:55 ` Andrew Jones
2016-01-18 16:43 ` Radim Krčmář
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 03/10] x86: use common portio accessors from io.h Andrew Jones
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 04/10] x86: pci.h: remove useless include Andrew Jones
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 05/10] x86: move x86/pci to the common lib Andrew Jones
2016-01-15 21:57 ` Radim Krčmář
2016-01-18 13:59 ` Andrew Jones
2016-01-18 16:46 ` Radim Krčmář
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 06/10] x86: share pci-testdev hdr in " Andrew Jones
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 07/10] lib/pci: make PCIDEVADDR_INVALID truly invalid Andrew Jones
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 08/10] lib: add linux dir for kernel uapi headers Andrew Jones
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 09/10] Revert "arm/arm64: import include/uapi/linux/psci.h" Andrew Jones
2016-01-15 16:51 ` [kvm-unit-tests PATCH v2 10/10] lib/linux: import pci_regs.h Andrew Jones
2016-01-15 21:57 ` [kvm-unit-tests PATCH v2 00/10] share pci-testdev with the framework Radim Krčmář
2016-01-18 14:01 ` Andrew Jones
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=20160118135234.GC4075@hawk.localdomain \
--to=drjones@redhat.com \
--cc=agordeev@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox