From patchwork Fri Jun 14 11:15:15 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 251376 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 7949F2C0084 for ; Fri, 14 Jun 2013 21:25:01 +1000 (EST) Received: from localhost ([::1]:53616 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UnS7n-00015R-JS for incoming@patchwork.ozlabs.org; Fri, 14 Jun 2013 07:24:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34287) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UnRyj-0000xE-Uk for qemu-devel@nongnu.org; Fri, 14 Jun 2013 07:15:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UnRyf-0004uR-Hb for qemu-devel@nongnu.org; Fri, 14 Jun 2013 07:15:37 -0400 Received: from oxygen.pond.sub.org ([2a01:4f8:121:10e4::3]:44299) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UnRyf-0004uG-9B for qemu-devel@nongnu.org; Fri, 14 Jun 2013 07:15:33 -0400 Received: from blackfin.pond.sub.org (p5B32AD34.dip0.t-ipconnect.de [91.50.173.52]) by oxygen.pond.sub.org (Postfix) with ESMTPA id 70DBDA4613; Fri, 14 Jun 2013 13:15:22 +0200 (CEST) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 028E1200C3; Fri, 14 Jun 2013 13:15:18 +0200 (CEST) From: Markus Armbruster To: qemu-devel@nongnu.org Date: Fri, 14 Jun 2013 13:15:15 +0200 Message-Id: <1371208516-7857-16-git-send-email-armbru@redhat.com> X-Mailer: git-send-email 1.7.11.7 In-Reply-To: <1371208516-7857-1-git-send-email-armbru@redhat.com> References: <1371208516-7857-1-git-send-email-armbru@redhat.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a01:4f8:121:10e4::3 Cc: aliguori@us.ibm.com, jan.kiszka@siemens.com, Blue Swirl , alex.williamson@redhat.com, aviksil@linux.vnet.ibm.com, afaerber@suse.de Subject: [Qemu-devel] [PATCH v3 15/16] boot-order-test: Support fw_cfg in I/O space X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Next commit needs it. Cc: Blue Swirl Signed-off-by: Markus Armbruster --- tests/boot-order-test.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/tests/boot-order-test.c b/tests/boot-order-test.c index 7b1edc1..d1d99f8 100644 --- a/tests/boot-order-test.c +++ b/tests/boot-order-test.c @@ -133,23 +133,31 @@ static void test_prep_boot_order(void) test_boot_orders("prep", read_boot_order_prep, test_cases_prep); } -static void read_fw_cfg(uint64_t cfg_addr, uint16_t cmd, +static void read_fw_cfg(uint64_t cfg_addr, bool addr_is_io, uint16_t cmd, void *buf, size_t len) { uint8_t *p = buf; size_t i; - writew(cfg_addr, cmd); - for (i = 0; i < len; i++) { - p[i] = readb(cfg_addr + 2); + if (addr_is_io) { + outw(cfg_addr, cmd); + for (i = 0; i < len; i++) { + p[i] = inb(cfg_addr + 1); + } + } else { + writew(cfg_addr, cmd); + for (i = 0; i < len; i++) { + p[i] = readb(cfg_addr + 2); + } } } -static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, uint16_t cmd) +static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, bool addr_is_io, + uint16_t cmd) { uint16_t value; - read_fw_cfg(cfg_addr, cmd, &value, sizeof(value)); + read_fw_cfg(cfg_addr, addr_is_io, cmd, &value, sizeof(value)); return le16_to_cpu(value); } @@ -157,7 +165,7 @@ static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, uint16_t cmd) static uint64_t read_boot_order_pmac(void) { - return read_fw_cfg_i16(PMAC_CFG_ADDR, FW_CFG_BOOT_DEVICE); + return read_fw_cfg_i16(PMAC_CFG_ADDR, false, FW_CFG_BOOT_DEVICE); } static const boot_order_test test_cases_fw_cfg[] = { @@ -182,7 +190,7 @@ static void test_pmac_newworld_boot_order(void) static uint64_t read_boot_order_sun4m(void) { - return read_fw_cfg_i16(SUN4M_CFG_ADDR, FW_CFG_BOOT_DEVICE); + return read_fw_cfg_i16(SUN4M_CFG_ADDR, false, FW_CFG_BOOT_DEVICE); } static void test_sun4m_boot_order(void)