From: Andrew Jones <drjones@redhat.com>
To: kvm@vger.kernel.org
Cc: pbonzini@redhat.com, mst@redhat.com, agordeev@redhat.com,
rkrcmar@redhat.com
Subject: [kvm-unit-tests PATCH 03/11] x86: use common portio accessors from io.h
Date: Fri, 15 Jan 2016 17:10:08 +0100 [thread overview]
Message-ID: <1452874216-3087-4-git-send-email-drjones@redhat.com> (raw)
In-Reply-To: <1452874216-3087-1-git-send-email-drjones@redhat.com>
x86 code reinvents io*/out* in a few places. To prepare for a common
pci driver use the common accessors from io.h in pci.c and vmexit.c.
Now we use the correct order (value, port) for out* too.
Signed-off-by: Andrew Jones <drjones@redhat.com>
---
lib/x86/pci.c | 14 ++------------
x86/vmexit.c | 40 ++++++----------------------------------
2 files changed, 8 insertions(+), 46 deletions(-)
diff --git a/lib/x86/pci.c b/lib/x86/pci.c
index 231668a72101f..991345ce77858 100644
--- a/lib/x86/pci.c
+++ b/lib/x86/pci.c
@@ -1,21 +1,11 @@
#include <linux/pci_regs.h>
#include "pci.h"
+#include "asm/io.h"
-static void outl(unsigned short port, unsigned val)
-{
- asm volatile("outl %0, %w1" : : "a"(val), "Nd"(port));
-}
-
-static unsigned inl(unsigned short port)
-{
- unsigned data;
- asm volatile("inl %w1, %0" : "=a"(data) : "Nd"(port));
- return data;
-}
static uint32_t pci_config_read(pcidevaddr_t dev, uint8_t reg)
{
uint32_t index = reg | (dev << 8) | (0x1 << 31);
- outl(0xCF8, index);
+ outl(index, 0xCF8);
return inl(0xCFC);
}
diff --git a/x86/vmexit.c b/x86/vmexit.c
index 1413454d9ccb6..1d74a89567adc 100644
--- a/x86/vmexit.c
+++ b/x86/vmexit.c
@@ -6,6 +6,7 @@
#include "x86/desc.h"
#include "x86/pci.h"
#include "x86/acpi.h"
+#include "asm/io.h"
struct test {
void (*func)(void);
@@ -15,35 +16,6 @@ struct test {
bool (*next)(struct test *);
};
-static void outb(unsigned short port, unsigned val)
-{
- asm volatile("outb %b0, %w1" : : "a"(val), "Nd"(port));
-}
-
-static void outw(unsigned short port, unsigned val)
-{
- asm volatile("outw %w0, %w1" : : "a"(val), "Nd"(port));
-}
-
-static void outl(unsigned short port, unsigned val)
-{
- asm volatile("outl %0, %w1" : : "a"(val), "Nd"(port));
-}
-
-static unsigned int inb(unsigned short port)
-{
- unsigned int val;
- asm volatile("xorl %0, %0; inb %w1, %b0" : "=a"(val) : "Nd"(port));
- return val;
-}
-
-static unsigned int inl(unsigned short port)
-{
- unsigned int val;
- asm volatile("inl %w1, %0" : "=a"(val) : "Nd"(port));
- return val;
-}
-
#define GOAL (1ull << 30)
static int nr_cpus;
@@ -123,7 +95,7 @@ static void inl_nop_kernel(void)
static void outl_elcr_kernel(void)
{
- outb(0x4d0, 0);
+ outb(0, 0x4d0);
}
static void mov_dr(void)
@@ -201,17 +173,17 @@ static void pci_mem_testl(void)
static void pci_io_testb(void)
{
- outb(pci_test.ioport, pci_test.data);
+ outb(pci_test.data, pci_test.ioport);
}
static void pci_io_testw(void)
{
- outw(pci_test.ioport, pci_test.data);
+ outw(pci_test.data, pci_test.ioport);
}
static void pci_io_testl(void)
{
- outl(pci_test.ioport, pci_test.data);
+ outl(pci_test.data, pci_test.ioport);
}
static uint8_t ioreadb(unsigned long addr, bool io)
@@ -236,7 +208,7 @@ static uint32_t ioreadl(unsigned long addr, bool io)
static void iowriteb(unsigned long addr, uint8_t data, bool io)
{
if (io) {
- outb(addr, data);
+ outb(data, addr);
} else {
*(volatile uint8_t *)addr = data;
}
--
2.4.3
next prev parent reply other threads:[~2016-01-15 16:10 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-15 16:10 [kvm-unit-tests PATCH 00/11] share pci-testdev with the framework Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 01/11] asm-generic: add portio accessors to io.h Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 02/11] x86: move io.h to asm Andrew Jones
2016-01-15 16:10 ` Andrew Jones [this message]
2016-01-15 16:10 ` [kvm-unit-tests PATCH 04/11] x86: pci.h: remove useless include Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 05/11] x86: mov pci.h to asm Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 06/11] x86: move x86/pci to the common lib Andrew Jones
2016-01-15 16:27 ` Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 07/11] x86: share pci-testdev hdr in " Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 08/11] lib/pci: make PCIDEVADDR_INVALID truly invalid Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 09/11] lib: add linux dir for kernel uapi headers Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 10/11] Revert "arm/arm64: import include/uapi/linux/psci.h" Andrew Jones
2016-01-15 16:10 ` [kvm-unit-tests PATCH 11/11] lib/linux: import pci_regs.h 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=1452874216-3087-4-git-send-email-drjones@redhat.com \
--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