From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515647531275318.15907154289334; Wed, 10 Jan 2018 21:12:11 -0800 (PST) Received: from localhost ([::1]:41486 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV9s-0004cT-3p for importer@patchew.org; Thu, 11 Jan 2018 00:12:08 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyl-0003QY-8v for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:01:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyK-0000KS-Uk for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:39 -0500 Received: from ozlabs.org ([103.22.144.67]:45277) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyI-00009H-EK; Thu, 11 Jan 2018 00:00:12 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFx59M2z9sBW; Thu, 11 Jan 2018 16:00:05 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646805; bh=3crBxvRs7MeMqSn10PuJf43IQZpM+oXqCYTzJ8Hf8mA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GBPqCJeuOn9DavxwbGUZQbeXVga8jVcI2n6M07VDNf24vwvX4PPPydOL7H4mFo3zj J4wPITtQ2VPNHdIcW5weZD3hqMehPh+thNU2WNS05IH+uFCtkygWInw086+0fHImY/ QuaWmahN5nHOrVGgfWB//na9WCzGuQC0T1YM3Icc= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:27 +1100 Message-Id: <20180111045937.2119-2-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 01/11] pseries: Update SLOF firmware image to qemu-slof-20171214 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, Alexey Kardashevskiy , qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Alexey Kardashevskiy The main changes are: - able to handle more devices with specified bootindex; - implements flatten device tree rendering, for both QEMU and guest kernel. The full list is: > boot: use a temporary bootdev-buf > boot: do not concatenate bootdev > libvirtio: Mark struct virtio_scsi_req_cmd as packed > fdt: Implement "fdt-fetch" method for client interface > rtas: Store RTAS address and entry in the device tree > board-qemu: Fix slof-build-id length > fdt: Pass the resulting device tree to QEMU > fdt: Fix version and add a word for FDT header size > tree: Rework set-chosen-cpu and store /chosen ihandle and phandle > node: Add some documentation > Revert various SLOF-to-QEMU private hypercalls > Use input-device and output-device > netboot: Create bootp-response when bootp is used > libnet/ipv6: assign times_asked value directly > usb-xhci: Reset ERSTSZ together with ERSTBA > virtio-net: rework the driver to support multiple open > board-qemu: add private hcall to inform host on "phandle" update Signed-off-by: Alexey Kardashevskiy Signed-off-by: David Gibson --- pc-bios/README | 2 +- pc-bios/slof.bin | Bin 905200 -> 913880 bytes roms/SLOF | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pc-bios/README b/pc-bios/README index 25fc6ce63f..a843e1e8b1 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -17,7 +17,7 @@ - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware implementation for certain IBM POWER hardware. The sources are at https://github.com/aik/SLOF, and the image currently in qemu is - built from git tag qemu-slof-20170724. + built from git tag qemu-slof-20171214. =20 - sgabios (the Serial Graphics Adapter option ROM) provides a means for legacy x86 software to communicate with an attached serial console as diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin index 6bb48d40a0929bc9d1e2846a97a91f96d321d60c..d46c83efb706e4664fec834234b= a69d96ede3473 100644 GIT binary patch delta 225096 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

<{daF+ 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 Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515646960203764.0704568503664; Wed, 10 Jan 2018 21:02:40 -0800 (PST) Received: from localhost ([::1]:40911 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV0Y-0004OV-W6 for importer@patchew.org; Thu, 11 Jan 2018 00:02:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54033) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyJ-00031L-V7 for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyJ-0000Fe-5z for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:12 -0500 Received: from ozlabs.org ([2401:3900:2:1::2]:32799) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyI-00009E-EN; Thu, 11 Jan 2018 00:00:11 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFy0TRFz9t3F; Thu, 11 Jan 2018 16:00:05 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646806; bh=XOPJ3eKpCa8ppy0Xd3Mo9UxDjb/qwKcq2e5lxUh3xTc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZM64Gk6NdAlc1IgAnPLasZ6p0jysxEpIQf4nL9wlYrwVdwb5eXrpoET3XekiKiUEG G3y/vjFos8RYgMtuIKMFLOZAyjgd8axNWriVBsS2yRk0Ca3P5KsEDv7TjQ3WJVfIfM qVjMLYIjcGy6p0V9Q18LelRShUQW16OBmGILXX/c= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:28 +1100 Message-Id: <20180111045937.2119-3-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 02/11] sm501: Add panel hardware cursor registers also to read function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan These were forgotten when adding panel layer support in ffd39257018 "SM501 emulation for R2D-SH4". Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 [dwg: Added reference to earlier commit in message] Signed-off-by: David Gibson --- hw/display/sm501.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 7f1822421a..b9b611131e 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -956,6 +956,19 @@ static uint64_t sm501_disp_ctrl_read(void *opaque, hwa= ddr addr, ret =3D s->dc_panel_v_sync; break; =20 + case SM501_DC_PANEL_HWC_ADDR: + ret =3D s->dc_panel_hwc_addr; + break; + case SM501_DC_PANEL_HWC_LOC: + ret =3D s->dc_panel_hwc_location; + break; + case SM501_DC_PANEL_HWC_COLOR_1_2: + ret =3D s->dc_panel_hwc_color_1_2; + break; + case SM501_DC_PANEL_HWC_COLOR_3: + ret =3D s->dc_panel_hwc_color_3; + break; + case SM501_DC_VIDEO_CONTROL: ret =3D s->dc_video_control; break; --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515647143660928.9002216606608; Wed, 10 Jan 2018 21:05:43 -0800 (PST) Received: from localhost ([::1]:40930 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV3e-0006wh-TN for importer@patchew.org; Thu, 11 Jan 2018 00:05:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54121) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyN-00033E-OV for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyJ-0000FU-6d for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:15 -0500 Received: from ozlabs.org ([103.22.144.67]:39331) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyI-00009I-EJ; Thu, 11 Jan 2018 00:00:11 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFy24ddz9t3h; Thu, 11 Jan 2018 16:00:05 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646806; bh=Zmdg7B1uaq7wWcItDKY5T+5kF4mFUqsVrhhEjTQk+t0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Umgs11ZugCnJRL8RvtL9EZ/sQCI9aPagMr1i31tyrmTraUH2h3sU4DyDTO4rtBJ+t yWgmiiz9ofJeHIiuHVCJojb2+agHdAl5k7INqyHCSSOCgrJ/xsfphm6+s4FpBNrcDc E8ogpqSCo63gW0FfXgnfn+sLNLIk67Gt+YtBe0E8= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:29 +1100 Message-Id: <20180111045937.2119-4-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 03/11] sm501: Add some more unimplemented registers X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan These are not really implemented (just return zero or default values) but add these so guests accessing them can run. Signed-off-by: BALATON Zoltan Signed-off-by: David Gibson --- hw/display/sm501.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index b9b611131e..4f7dc59b25 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -795,6 +795,8 @@ static uint64_t sm501_system_config_read(void *opaque, = hwaddr addr, case SM501_ARBTRTN_CONTROL: ret =3D s->arbitration_control; break; + case SM501_COMMAND_LIST_STATUS: + ret =3D 0x00180002; /* FIFOs are empty, everything idle */ case SM501_IRQ_MASK: ret =3D s->irq_mask; break; @@ -812,6 +814,9 @@ static uint64_t sm501_system_config_read(void *opaque, = hwaddr addr, case SM501_POWER_MODE_CONTROL: ret =3D s->power_mode_control; break; + case SM501_ENDIAN_CONTROL: + ret =3D 0; /* Only default little endian mode is supported */ + break; =20 default: printf("sm501 system config : not implemented register read." @@ -865,6 +870,12 @@ static void sm501_system_config_write(void *opaque, hw= addr addr, case SM501_POWER_MODE_CONTROL: s->power_mode_control =3D value & 0x00000003; break; + case SM501_ENDIAN_CONTROL: + if (value & 0x00000001) { + printf("sm501 system config : big endian mode not implemented.= \n"); + abort(); + } + break; =20 default: printf("sm501 system config : not implemented register write." @@ -924,6 +935,9 @@ static uint64_t sm501_disp_ctrl_read(void *opaque, hwad= dr addr, case SM501_DC_PANEL_PANNING_CONTROL: ret =3D s->dc_panel_panning_control; break; + case SM501_DC_PANEL_COLOR_KEY: + /* Not implemented yet */ + break; case SM501_DC_PANEL_FB_ADDR: ret =3D s->dc_panel_fb_addr; break; @@ -1035,6 +1049,9 @@ static void sm501_disp_ctrl_write(void *opaque, hwadd= r addr, case SM501_DC_PANEL_PANNING_CONTROL: s->dc_panel_panning_control =3D value & 0xFF3FFF3F; break; + case SM501_DC_PANEL_COLOR_KEY: + /* Not implemented yet */ + break; case SM501_DC_PANEL_FB_ADDR: s->dc_panel_fb_addr =3D value & 0x8FFFFFF0; break; --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515647431490727.2072308020163; Wed, 10 Jan 2018 21:10:31 -0800 (PST) Received: from localhost ([::1]:41267 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV8F-0003UX-Rm for importer@patchew.org; Thu, 11 Jan 2018 00:10:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54167) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyP-00034j-2J for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyM-0000No-IC for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:16 -0500 Received: from ozlabs.org ([103.22.144.67]:52443) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyL-0000ID-Lh; Thu, 11 Jan 2018 00:00:14 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFy5qZ4z9t3n; Thu, 11 Jan 2018 16:00:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646806; bh=3z8zZt0OQLdUjEGAq3YdSlLEgKlhUPxf77VnsuQJ5KY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BU+oPh+/6v962W8tgdE4mPLxZKB5XKd6jW2JOYR2sFKAXbUzA016X4y5DV37iTeiH v5i5rayaQtRZnDBxE2aNswKhCvoAtnusJAxu7wXvXSsToCjguJDe9glXcCsCcWZ2xp 2Kd9SsZ6Q/je+5erktKMblkQY83k4u0Mr2PD+va4= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:30 +1100 Message-Id: <20180111045937.2119-5-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 04/11] ppc4xx_i2c: Implement basic I2C functions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, =?UTF-8?q?Fran=C3=A7ois=20Revol?= , surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan Enough to please U-Boot and make it able to detect SDRAM SPD EEPROMs Signed-off-by: Fran=C3=A7ois Revol Signed-off-by: BALATON Zoltan Reviewed-by: David Gibson Signed-off-by: David Gibson --- hw/i2c/ppc4xx_i2c.c | 198 +++++++++++++++++++++++++++++++++++++---= ---- include/hw/i2c/ppc4xx_i2c.h | 3 + 2 files changed, 171 insertions(+), 30 deletions(-) diff --git a/hw/i2c/ppc4xx_i2c.c b/hw/i2c/ppc4xx_i2c.c index 5a6bde951e..e873a445da 100644 --- a/hw/i2c/ppc4xx_i2c.c +++ b/hw/i2c/ppc4xx_i2c.c @@ -2,6 +2,8 @@ * PPC4xx I2C controller emulation * * Copyright (c) 2007 Jocelyn Mayer + * Copyright (c) 2012 Fran=C3=A7ois Revol + * Copyright (c) 2016 BALATON Zoltan * * Permission is hereby granted, free of charge, to any person obtaining a= copy * of this software and associated documentation files (the "Software"), t= o deal @@ -25,26 +27,118 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu-common.h" +#include "qemu/log.h" #include "cpu.h" #include "hw/hw.h" #include "hw/i2c/ppc4xx_i2c.h" =20 -/*#define DEBUG_I2C*/ +#define PPC4xx_I2C_MEM_SIZE 0x12 =20 -#define PPC4xx_I2C_MEM_SIZE 0x11 +#define IIC_CNTL_PT (1 << 0) +#define IIC_CNTL_READ (1 << 1) +#define IIC_CNTL_CHT (1 << 2) +#define IIC_CNTL_RPST (1 << 3) + +#define IIC_STS_PT (1 << 0) +#define IIC_STS_ERR (1 << 2) +#define IIC_STS_MDBS (1 << 5) + +#define IIC_EXTSTS_XFRA (1 << 0) + +#define IIC_XTCNTLSS_SRST (1 << 0) + +static void ppc4xx_i2c_reset(DeviceState *s) +{ + PPC4xxI2CState *i2c =3D PPC4xx_I2C(s); + + /* FIXME: Should also reset bus? + *if (s->address !=3D ADDR_RESET) { + * i2c_end_transfer(s->bus); + *} + */ + + i2c->mdata =3D 0; + i2c->lmadr =3D 0; + i2c->hmadr =3D 0; + i2c->cntl =3D 0; + i2c->mdcntl =3D 0; + i2c->sts =3D 0; + i2c->extsts =3D 0x8f; + i2c->sdata =3D 0; + i2c->lsadr =3D 0; + i2c->hsadr =3D 0; + i2c->clkdiv =3D 0; + i2c->intrmsk =3D 0; + i2c->xfrcnt =3D 0; + i2c->xtcntlss =3D 0; + i2c->directcntl =3D 0x0f; + i2c->intr =3D 0; +} + +static inline bool ppc4xx_i2c_is_master(PPC4xxI2CState *i2c) +{ + return true; +} =20 static uint64_t ppc4xx_i2c_readb(void *opaque, hwaddr addr, unsigned int s= ize) { PPC4xxI2CState *i2c =3D PPC4xx_I2C(opaque); uint64_t ret; =20 -#ifdef DEBUG_I2C - printf("%s: addr " TARGET_FMT_plx "\n", __func__, addr); -#endif switch (addr) { case 0x00: - /*i2c_readbyte(&i2c->mdata);*/ ret =3D i2c->mdata; + if (ppc4xx_i2c_is_master(i2c)) { + ret =3D 0xff; + + if (!(i2c->sts & IIC_STS_MDBS)) { + qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Trying to read " + "without starting transfer\n", + TYPE_PPC4xx_I2C, __func__); + } else { + int pending =3D (i2c->cntl >> 4) & 3; + + /* get the next byte */ + int byte =3D i2c_recv(i2c->bus); + + if (byte < 0) { + qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: read failed " + "for device 0x%02x\n", TYPE_PPC4xx_I2C, + __func__, i2c->lmadr); + ret =3D 0xff; + } else { + ret =3D byte; + /* Raise interrupt if enabled */ + /*ppc4xx_i2c_raise_interrupt(i2c)*/; + } + + if (!pending) { + i2c->sts &=3D ~IIC_STS_MDBS; + /*i2c_end_transfer(i2c->bus);*/ + /*} else if (i2c->cntl & (IIC_CNTL_RPST | IIC_CNTL_CHT)) {= */ + } else if (pending) { + /* current smbus implementation doesn't like + multibyte xfer repeated start */ + i2c_end_transfer(i2c->bus); + if (i2c_start_transfer(i2c->bus, i2c->lmadr >> 1, 1)) { + /* if non zero is returned, the adress is not vali= d */ + i2c->sts &=3D ~IIC_STS_PT; + i2c->sts |=3D IIC_STS_ERR; + i2c->extsts |=3D IIC_EXTSTS_XFRA; + } else { + /*i2c->sts |=3D IIC_STS_PT;*/ + i2c->sts |=3D IIC_STS_MDBS; + i2c->sts &=3D ~IIC_STS_ERR; + i2c->extsts =3D 0; + } + } + pending--; + i2c->cntl =3D (i2c->cntl & 0xcf) | (pending << 4); + } + } else { + qemu_log_mask(LOG_UNIMP, "[%s]%s: slave mode not implemented\n= ", + TYPE_PPC4xx_I2C, __func__); + } break; case 0x02: ret =3D i2c->sdata; @@ -88,13 +182,15 @@ static uint64_t ppc4xx_i2c_readb(void *opaque, hwaddr = addr, unsigned int size) case 0x10: ret =3D i2c->directcntl; break; + case 0x11: + ret =3D i2c->intr; + break; default: - ret =3D 0x00; + qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Bad address at offset 0x%" + HWADDR_PRIx "\n", TYPE_PPC4xx_I2C, __func__, addr); + ret =3D 0; break; } -#ifdef DEBUG_I2C - printf("%s: addr " TARGET_FMT_plx " %02" PRIx64 "\n", __func__, addr, = ret); -#endif =20 return ret; } @@ -103,26 +199,70 @@ static void ppc4xx_i2c_writeb(void *opaque, hwaddr ad= dr, uint64_t value, unsigned int size) { PPC4xxI2CState *i2c =3D opaque; -#ifdef DEBUG_I2C - printf("%s: addr " TARGET_FMT_plx " val %08" PRIx64 "\n", - __func__, addr, value); -#endif + switch (addr) { case 0x00: i2c->mdata =3D value; - /*i2c_sendbyte(&i2c->mdata);*/ + if (!i2c_bus_busy(i2c->bus)) { + /* assume we start a write transfer */ + if (i2c_start_transfer(i2c->bus, i2c->lmadr >> 1, 0)) { + /* if non zero is returned, the adress is not valid */ + i2c->sts &=3D ~IIC_STS_PT; + i2c->sts |=3D IIC_STS_ERR; + i2c->extsts |=3D IIC_EXTSTS_XFRA; + } else { + i2c->sts |=3D IIC_STS_PT; + i2c->sts &=3D ~IIC_STS_ERR; + i2c->extsts =3D 0; + } + } + if (i2c_bus_busy(i2c->bus)) { + if (i2c_send(i2c->bus, i2c->mdata)) { + /* if the target return non zero then end the transfer */ + i2c->sts &=3D ~IIC_STS_PT; + i2c->sts |=3D IIC_STS_ERR; + i2c->extsts |=3D IIC_EXTSTS_XFRA; + i2c_end_transfer(i2c->bus); + } + } break; case 0x02: i2c->sdata =3D value; break; case 0x04: i2c->lmadr =3D value; + if (i2c_bus_busy(i2c->bus)) { + i2c_end_transfer(i2c->bus); + } break; case 0x05: i2c->hmadr =3D value; break; case 0x06: i2c->cntl =3D value; + if (i2c->cntl & IIC_CNTL_PT) { + if (i2c->cntl & IIC_CNTL_READ) { + if (i2c_bus_busy(i2c->bus)) { + /* end previous transfer */ + i2c->sts &=3D ~IIC_STS_PT; + i2c_end_transfer(i2c->bus); + } + if (i2c_start_transfer(i2c->bus, i2c->lmadr >> 1, 1)) { + /* if non zero is returned, the adress is not valid */ + i2c->sts &=3D ~IIC_STS_PT; + i2c->sts |=3D IIC_STS_ERR; + i2c->extsts |=3D IIC_EXTSTS_XFRA; + } else { + /*i2c->sts |=3D IIC_STS_PT;*/ + i2c->sts |=3D IIC_STS_MDBS; + i2c->sts &=3D ~IIC_STS_ERR; + i2c->extsts =3D 0; + } + } else { + /* we actually already did the write transfer... */ + i2c->sts &=3D ~IIC_STS_PT; + } + } break; case 0x07: i2c->mdcntl =3D value & 0xDF; @@ -135,6 +275,7 @@ static void ppc4xx_i2c_writeb(void *opaque, hwaddr addr= , uint64_t value, break; case 0x0A: i2c->lsadr =3D value; + /*i2c_set_slave_address(i2c->bus, i2c->lsadr);*/ break; case 0x0B: i2c->hsadr =3D value; @@ -149,11 +290,23 @@ static void ppc4xx_i2c_writeb(void *opaque, hwaddr ad= dr, uint64_t value, i2c->xfrcnt =3D value & 0x77; break; case 0x0F: + if (value & IIC_XTCNTLSS_SRST) { + /* Is it actually a full reset? U-Boot sets some regs before */ + ppc4xx_i2c_reset(DEVICE(i2c)); + break; + } i2c->xtcntlss =3D value; break; case 0x10: i2c->directcntl =3D value & 0x7; break; + case 0x11: + i2c->intr =3D value; + break; + default: + qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Bad address at offset 0x%" + HWADDR_PRIx "\n", TYPE_PPC4xx_I2C, __func__, addr); + break; } } =20 @@ -167,21 +320,6 @@ static const MemoryRegionOps ppc4xx_i2c_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static void ppc4xx_i2c_reset(DeviceState *s) -{ - PPC4xxI2CState *i2c =3D PPC4xx_I2C(s); - - i2c->mdata =3D 0x00; - i2c->sdata =3D 0x00; - i2c->cntl =3D 0x00; - i2c->mdcntl =3D 0x00; - i2c->sts =3D 0x00; - i2c->extsts =3D 0x00; - i2c->clkdiv =3D 0x00; - i2c->xfrcnt =3D 0x00; - i2c->directcntl =3D 0x0F; -} - static void ppc4xx_i2c_init(Object *o) { PPC4xxI2CState *s =3D PPC4xx_I2C(o); diff --git a/include/hw/i2c/ppc4xx_i2c.h b/include/hw/i2c/ppc4xx_i2c.h index 3450bda577..3c603071bd 100644 --- a/include/hw/i2c/ppc4xx_i2c.h +++ b/include/hw/i2c/ppc4xx_i2c.h @@ -2,6 +2,8 @@ * PPC4xx I2C controller emulation * * Copyright (c) 2007 Jocelyn Mayer + * Copyright (c) 2012 Fran=C3=A7ois Revol + * Copyright (c) 2016 BALATON Zoltan * * Permission is hereby granted, free of charge, to any person obtaining a= copy * of this software and associated documentation files (the "Software"), t= o deal @@ -55,6 +57,7 @@ typedef struct PPC4xxI2CState { uint8_t xfrcnt; uint8_t xtcntlss; uint8_t directcntl; + uint8_t intr; } PPC4xxI2CState; =20 #endif /* PPC4XX_I2C_H */ --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515646961788420.5634791250251; Wed, 10 Jan 2018 21:02:41 -0800 (PST) Received: from localhost ([::1]:40913 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV0i-0004Wg-9e for importer@patchew.org; Thu, 11 Jan 2018 00:02:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54133) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyO-00033f-2L for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyL-0000MV-Vx for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:16 -0500 Received: from ozlabs.org ([103.22.144.67]:56797) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyL-0000IB-F2; Thu, 11 Jan 2018 00:00:13 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFy512rz9t3v; Thu, 11 Jan 2018 16:00:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646806; bh=uHVQ5iXcTAu0sEvLUxxgQpSCKonG961ncrvdXeIrLbg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CPoR8s0D5HPcSeGtU4Q+9Xx9R5VIsqeWutroEtJko1tAP6MeCfhXKtfa9jJgrfzqA NDIIZVBPjI76e1pvKnOxaML66m3DZ9jWvBvmF6yIgao2jROprtoZqYCaQVvZXfwNi9 qiSxZkd6wtMtTwLx9oF1I5hV2b6XmVmNVDvKHfDc= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:31 +1100 Message-Id: <20180111045937.2119-6-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 05/11] spapr_pci: use warn_report() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Greg Kurz These two are definitely warnings. Let's use the appropriate API. Signed-off-by: Greg Kurz Signed-off-by: David Gibson --- hw/ppc/spapr_pci.c | 6 +++--- hw/ppc/spapr_pci_vfio.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 88797b3d36..695c820911 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1696,9 +1696,9 @@ static void spapr_phb_realize(DeviceState *dev, Error= **errp) /* DMA setup */ if (((sphb->page_size_mask & qemu_getrampagesize()) =3D=3D 0) && kvm_enabled()) { - error_report("System page size 0x%lx is not enabled in page_size_m= ask " - "(0x%"PRIx64"). Performance may be slow", - qemu_getrampagesize(), sphb->page_size_mask); + warn_report("System page size 0x%lx is not enabled in page_size_ma= sk " + "(0x%"PRIx64"). Performance may be slow", + qemu_getrampagesize(), sphb->page_size_mask); } =20 for (i =3D 0; i < windows_supported; ++i) { diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c index 8448e0b024..1f775ea93d 100644 --- a/hw/ppc/spapr_pci_vfio.c +++ b/hw/ppc/spapr_pci_vfio.c @@ -50,7 +50,7 @@ static Property spapr_phb_vfio_properties[] =3D { static void spapr_phb_vfio_instance_init(Object *obj) { if (!qtest_enabled()) { - error_report("spapr-pci-vfio-host-bridge is deprecated"); + warn_report("spapr-pci-vfio-host-bridge is deprecated"); } } =20 --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515647164291785.886417091089; Wed, 10 Jan 2018 21:06:04 -0800 (PST) Received: from localhost ([::1]:40936 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV3z-0007GI-Ae for importer@patchew.org; Thu, 11 Jan 2018 00:06:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54108) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyN-00032j-6q for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyJ-0000Fo-78 for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:15 -0500 Received: from ozlabs.org ([103.22.144.67]:44899) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyI-00009K-EB; Thu, 11 Jan 2018 00:00:11 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFy3k2Mz9t3k; Thu, 11 Jan 2018 16:00:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646806; bh=+4HNqb/N0DCdUuokY/y4XXJhFCj4iYJkIeM8YlUfrBc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Tuu1bjiS86WDWpJ+hbQsqY4BXUmT1+joCVrjKA0LPvNXc+fab1HbZSkGEuaQ/ICcR NVC6IE0WKJEyM5CALNUuuVm6XCe/ykeEJUhphoGVsHeCnoL0UCaAbgu7453jYy7jBW AVMb5KYm2XWOLsttnYkZUnicvRU8mOZSv7PkP2+8= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:32 +1100 Message-Id: <20180111045937.2119-7-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 06/11] hw/ide: Emulate SiI3112 SATA controller X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan This is a common generic PCI SATA controller that is also used in PCs but more importantly guests running on the Sam460ex board prefer this card and have a driver for it (unlike for other SATA controllers already emulated). Signed-off-by: BALATON Zoltan Acked-by: John Snow Signed-off-by: David Gibson --- MAINTAINERS | 6 + default-configs/ppcemb-softmmu.mak | 1 + hw/ide/Makefile.objs | 1 + hw/ide/sii3112.c | 368 +++++++++++++++++++++++++++++++++= ++++ hw/ide/trace-events | 5 + 5 files changed, 381 insertions(+) create mode 100644 hw/ide/sii3112.c diff --git a/MAINTAINERS b/MAINTAINERS index bc2d3a4ef1..8ab86930e4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -765,6 +765,12 @@ L: qemu-ppc@nongnu.org S: Odd Fixes F: hw/ppc/virtex_ml507.c =20 +sam460ex +M: BALATON Zoltan +L: qemu-ppc@nongnu.org +S: Maintained +F: hw/ide/sii3112.c + SH4 Machines ------------ R2D diff --git a/default-configs/ppcemb-softmmu.mak b/default-configs/ppcemb-so= ftmmu.mak index 13917fb7a3..5db4618a5a 100644 --- a/default-configs/ppcemb-softmmu.mak +++ b/default-configs/ppcemb-softmmu.mak @@ -16,3 +16,4 @@ CONFIG_I8259=3Dy CONFIG_XILINX=3Dy CONFIG_XILINX_ETHLITE=3Dy CONFIG_SM501=3Dy +CONFIG_IDE_SII3112=3Dy diff --git a/hw/ide/Makefile.objs b/hw/ide/Makefile.objs index f0edca3300..fc328ffbe8 100644 --- a/hw/ide/Makefile.objs +++ b/hw/ide/Makefile.objs @@ -11,3 +11,4 @@ common-obj-$(CONFIG_MICRODRIVE) +=3D microdrive.o common-obj-$(CONFIG_AHCI) +=3D ahci.o common-obj-$(CONFIG_AHCI) +=3D ich.o common-obj-$(CONFIG_ALLWINNER_A10) +=3D ahci-allwinner.o +common-obj-$(CONFIG_IDE_SII3112) +=3D sii3112.o diff --git a/hw/ide/sii3112.c b/hw/ide/sii3112.c new file mode 100644 index 0000000000..e2f5562bb7 --- /dev/null +++ b/hw/ide/sii3112.c @@ -0,0 +1,368 @@ +/* + * QEMU SiI3112A PCI to Serial ATA Controller Emulation + * + * Copyright (C) 2017 BALATON Zoltan + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * + */ + +/* For documentation on this and similar cards see: + * http://wiki.osdev.org/User:Quok/Silicon_Image_Datasheets + */ + +#include +#include +#include "trace.h" + +#define TYPE_SII3112_PCI "sii3112" +#define SII3112_PCI(obj) OBJECT_CHECK(SiI3112PCIState, (obj), \ + TYPE_SII3112_PCI) + +typedef struct SiI3112Regs { + uint32_t confstat; + uint32_t scontrol; + uint16_t sien; + uint8_t swdata; +} SiI3112Regs; + +typedef struct SiI3112PCIState { + PCIIDEState i; + MemoryRegion mmio; + SiI3112Regs regs[2]; +} SiI3112PCIState; + +/* The sii3112_reg_read and sii3112_reg_write functions implement the + * Internal Register Space - BAR5 (section 6.7 of the data sheet). + */ + +static uint64_t sii3112_reg_read(void *opaque, hwaddr addr, + unsigned int size) +{ + SiI3112PCIState *d =3D opaque; + uint64_t val =3D 0; + + switch (addr) { + case 0x00: + val =3D d->i.bmdma[0].cmd; + break; + case 0x01: + val =3D d->regs[0].swdata; + break; + case 0x02: + val =3D d->i.bmdma[0].status; + break; + case 0x03: + val =3D 0; + break; + case 0x04 ... 0x07: + val =3D bmdma_addr_ioport_ops.read(&d->i.bmdma[0], addr - 4, size); + break; + case 0x08: + val =3D d->i.bmdma[1].cmd; + break; + case 0x09: + val =3D d->regs[1].swdata; + break; + case 0x0a: + val =3D d->i.bmdma[1].status; + break; + case 0x0b: + val =3D 0; + break; + case 0x0c ... 0x0f: + val =3D bmdma_addr_ioport_ops.read(&d->i.bmdma[1], addr - 12, size= ); + break; + case 0x10: + val =3D d->i.bmdma[0].cmd; + val |=3D (d->regs[0].confstat & (1UL << 11) ? (1 << 4) : 0); /*SAT= AINT0*/ + val |=3D (d->regs[1].confstat & (1UL << 11) ? (1 << 6) : 0); /*SAT= AINT1*/ + val |=3D (d->i.bmdma[1].status & BM_STATUS_INT ? (1 << 14) : 0); + val |=3D d->i.bmdma[0].status << 16; + val |=3D d->i.bmdma[1].status << 24; + break; + case 0x18: + val =3D d->i.bmdma[1].cmd; + val |=3D (d->regs[1].confstat & (1UL << 11) ? (1 << 4) : 0); + val |=3D d->i.bmdma[1].status << 16; + break; + case 0x80 ... 0x87: + if (size =3D=3D 1) { + val =3D ide_ioport_read(&d->i.bus[0], addr - 0x80); + } else if (addr =3D=3D 0x80) { + val =3D (size =3D=3D 2) ? ide_data_readw(&d->i.bus[0], 0) : + ide_data_readl(&d->i.bus[0], 0); + } else { + val =3D (1ULL << (size * 8)) - 1; + } + break; + case 0x8a: + val =3D (size =3D=3D 1) ? ide_status_read(&d->i.bus[0], 4) : + (1ULL << (size * 8)) - 1; + break; + case 0xa0: + val =3D d->regs[0].confstat; + break; + case 0xc0 ... 0xc7: + if (size =3D=3D 1) { + val =3D ide_ioport_read(&d->i.bus[1], addr - 0xc0); + } else if (addr =3D=3D 0xc0) { + val =3D (size =3D=3D 2) ? ide_data_readw(&d->i.bus[1], 0) : + ide_data_readl(&d->i.bus[1], 0); + } else { + val =3D (1ULL << (size * 8)) - 1; + } + break; + case 0xca: + val =3D (size =3D=3D 1) ? ide_status_read(&d->i.bus[0], 4) : + (1ULL << (size * 8)) - 1; + break; + case 0xe0: + val =3D d->regs[1].confstat; + break; + case 0x100: + val =3D d->regs[0].scontrol; + break; + case 0x104: + val =3D (d->i.bus[0].ifs[0].blk) ? 0x113 : 0; + break; + case 0x148: + val =3D d->regs[0].sien << 16; + break; + case 0x180: + val =3D d->regs[1].scontrol; + break; + case 0x184: + val =3D (d->i.bus[1].ifs[0].blk) ? 0x113 : 0; + break; + case 0x1c8: + val =3D d->regs[1].sien << 16; + break; + default: + val =3D 0; + } + trace_sii3112_read(size, addr, val); + return val; +} + +static void sii3112_reg_write(void *opaque, hwaddr addr, + uint64_t val, unsigned int size) +{ + SiI3112PCIState *d =3D opaque; + + trace_sii3112_write(size, addr, val); + switch (addr) { + case 0x00: + case 0x10: + bmdma_cmd_writeb(&d->i.bmdma[0], val); + break; + case 0x01: + case 0x11: + d->regs[0].swdata =3D val & 0x3f; + break; + case 0x02: + case 0x12: + d->i.bmdma[0].status =3D (val & 0x60) | (d->i.bmdma[0].status & 1)= | + (d->i.bmdma[0].status & ~val & 6); + break; + case 0x04 ... 0x07: + bmdma_addr_ioport_ops.write(&d->i.bmdma[0], addr - 4, val, size); + break; + case 0x08: + case 0x18: + bmdma_cmd_writeb(&d->i.bmdma[1], val); + break; + case 0x09: + case 0x19: + d->regs[1].swdata =3D val & 0x3f; + break; + case 0x0a: + case 0x1a: + d->i.bmdma[1].status =3D (val & 0x60) | (d->i.bmdma[1].status & 1)= | + (d->i.bmdma[1].status & ~val & 6); + break; + case 0x0c ... 0x0f: + bmdma_addr_ioport_ops.write(&d->i.bmdma[1], addr - 12, val, size); + break; + case 0x80 ... 0x87: + if (size =3D=3D 1) { + ide_ioport_write(&d->i.bus[0], addr - 0x80, val); + } else if (addr =3D=3D 0x80) { + if (size =3D=3D 2) { + ide_data_writew(&d->i.bus[0], 0, val); + } else { + ide_data_writel(&d->i.bus[0], 0, val); + } + } + break; + case 0x8a: + if (size =3D=3D 1) { + ide_cmd_write(&d->i.bus[0], 4, val); + } + break; + case 0xc0 ... 0xc7: + if (size =3D=3D 1) { + ide_ioport_write(&d->i.bus[1], addr - 0xc0, val); + } else if (addr =3D=3D 0xc0) { + if (size =3D=3D 2) { + ide_data_writew(&d->i.bus[1], 0, val); + } else { + ide_data_writel(&d->i.bus[1], 0, val); + } + } + break; + case 0xca: + if (size =3D=3D 1) { + ide_cmd_write(&d->i.bus[1], 4, val); + } + break; + case 0x100: + d->regs[0].scontrol =3D val & 0xfff; + if (val & 1) { + ide_bus_reset(&d->i.bus[0]); + } + break; + case 0x148: + d->regs[0].sien =3D (val >> 16) & 0x3eed; + break; + case 0x180: + d->regs[1].scontrol =3D val & 0xfff; + if (val & 1) { + ide_bus_reset(&d->i.bus[1]); + } + break; + case 0x1c8: + d->regs[1].sien =3D (val >> 16) & 0x3eed; + break; + default: + val =3D 0; + } +} + +static const MemoryRegionOps sii3112_reg_ops =3D { + .read =3D sii3112_reg_read, + .write =3D sii3112_reg_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, +}; + +/* the PCI irq level is the logical OR of the two channels */ +static void sii3112_update_irq(SiI3112PCIState *s) +{ + int i, set =3D 0; + + for (i =3D 0; i < 2; i++) { + set |=3D s->regs[i].confstat & (1UL << 11); + } + pci_set_irq(PCI_DEVICE(s), (set ? 1 : 0)); +} + +static void sii3112_set_irq(void *opaque, int channel, int level) +{ + SiI3112PCIState *s =3D opaque; + + trace_sii3112_set_irq(channel, level); + if (level) { + s->regs[channel].confstat |=3D (1UL << 11); + } else { + s->regs[channel].confstat &=3D ~(1UL << 11); + } + + sii3112_update_irq(s); +} + +static void sii3112_reset(void *opaque) +{ + SiI3112PCIState *s =3D opaque; + int i; + + for (i =3D 0; i < 2; i++) { + s->regs[i].confstat =3D 0x6515 << 16; + ide_bus_reset(&s->i.bus[i]); + } +} + +static void sii3112_pci_realize(PCIDevice *dev, Error **errp) +{ + SiI3112PCIState *d =3D SII3112_PCI(dev); + PCIIDEState *s =3D PCI_IDE(dev); + MemoryRegion *mr; + qemu_irq *irq; + int i; + + pci_config_set_interrupt_pin(dev->config, 1); + pci_set_byte(dev->config + PCI_CACHE_LINE_SIZE, 8); + + /* BAR5 is in PCI memory space */ + memory_region_init_io(&d->mmio, OBJECT(d), &sii3112_reg_ops, d, + "sii3112.bar5", 0x200); + pci_register_bar(dev, 5, PCI_BASE_ADDRESS_SPACE_MEMORY, &d->mmio); + + /* BAR0-BAR4 are PCI I/O space aliases into BAR5 */ + mr =3D g_new(MemoryRegion, 1); + memory_region_init_alias(mr, OBJECT(d), "sii3112.bar0", &d->mmio, 0x80= , 8); + pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_IO, mr); + mr =3D g_new(MemoryRegion, 1); + memory_region_init_alias(mr, OBJECT(d), "sii3112.bar1", &d->mmio, 0x88= , 4); + pci_register_bar(dev, 1, PCI_BASE_ADDRESS_SPACE_IO, mr); + mr =3D g_new(MemoryRegion, 1); + memory_region_init_alias(mr, OBJECT(d), "sii3112.bar2", &d->mmio, 0xc0= , 8); + pci_register_bar(dev, 2, PCI_BASE_ADDRESS_SPACE_IO, mr); + mr =3D g_new(MemoryRegion, 1); + memory_region_init_alias(mr, OBJECT(d), "sii3112.bar3", &d->mmio, 0xc8= , 4); + pci_register_bar(dev, 3, PCI_BASE_ADDRESS_SPACE_IO, mr); + mr =3D g_new(MemoryRegion, 1); + memory_region_init_alias(mr, OBJECT(d), "sii3112.bar4", &d->mmio, 0, 1= 6); + pci_register_bar(dev, 4, PCI_BASE_ADDRESS_SPACE_IO, mr); + + irq =3D qemu_allocate_irqs(sii3112_set_irq, d, 2); + for (i =3D 0; i < 2; i++) { + ide_bus_new(&s->bus[i], sizeof(s->bus[i]), DEVICE(dev), i, 1); + ide_init2(&s->bus[i], irq[i]); + + bmdma_init(&s->bus[i], &s->bmdma[i], s); + s->bmdma[i].bus =3D &s->bus[i]; + ide_register_restart_cb(&s->bus[i]); + } + qemu_register_reset(sii3112_reset, s); +} + +static void sii3112_pci_exitfn(PCIDevice *dev) +{ + PCIIDEState *d =3D PCI_IDE(dev); + int i; + + for (i =3D 0; i < 2; ++i) { + memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].extra_io); + memory_region_del_subregion(&d->bmdma_bar, &d->bmdma[i].addr_iopor= t); + } +} + +static void sii3112_pci_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *pd =3D PCI_DEVICE_CLASS(klass); + + pd->vendor_id =3D 0x1095; + pd->device_id =3D 0x3112; + pd->class_id =3D PCI_CLASS_STORAGE_RAID; + pd->revision =3D 1; + pd->realize =3D sii3112_pci_realize; + pd->exit =3D sii3112_pci_exitfn; + dc->desc =3D "SiI3112A SATA controller"; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); +} + +static const TypeInfo sii3112_pci_info =3D { + .name =3D TYPE_SII3112_PCI, + .parent =3D TYPE_PCI_IDE, + .instance_size =3D sizeof(SiI3112PCIState), + .class_init =3D sii3112_pci_class_init, +}; + +static void sii3112_register_types(void) +{ + type_register_static(&sii3112_pci_info); +} + +type_init(sii3112_register_types) diff --git a/hw/ide/trace-events b/hw/ide/trace-events index 601bd97d81..0c39cabe72 100644 --- a/hw/ide/trace-events +++ b/hw/ide/trace-events @@ -37,6 +37,11 @@ bmdma_addr_write(uint64_t data) "data: 0x%016"PRIx64 bmdma_read(uint64_t addr, uint8_t val) "bmdma: readb 0x%"PRIx64" : 0x%02x" bmdma_write(uint64_t addr, uint64_t val) "bmdma: writeb 0x%"PRIx64" : 0x%0= 2"PRIx64 =20 +# hw/ide/sii3112.c +sii3112_read(int size, uint64_t addr, uint64_t val) "bmdma: read (size %d)= 0x%"PRIx64" : 0x%02"PRIx64 +sii3112_write(int size, uint64_t addr, uint64_t val) "bmdma: write (size %= d) 0x%"PRIx64" : 0x%02"PRIx64 +sii3112_set_irq(int channel, int level) "channel %d level %d" + # hw/ide/via.c bmdma_read_via(uint64_t addr, uint32_t val) "bmdma: readb 0x%"PRIx64" : 0x= %02x" bmdma_write_via(uint64_t addr, uint64_t val) "bmdma: writeb 0x%"PRIx64" : = 0x%02"PRIx64 --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515647337403512.0696726626429; Wed, 10 Jan 2018 21:08:57 -0800 (PST) Received: from localhost ([::1]:41192 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV6m-0002Ry-HF for importer@patchew.org; Thu, 11 Jan 2018 00:08:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54219) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyQ-00036G-De for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyN-0000Oq-26 for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:18 -0500 Received: from ozlabs.org ([2401:3900:2:1::2]:58133) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyL-0000Hv-UH; Thu, 11 Jan 2018 00:00:14 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFz1lc7z9t3x; Thu, 11 Jan 2018 16:00:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646807; bh=tt4IvVQfEI/mFt7t0b6W76iuxhnkCCvnYhplOKppFJ4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SgMkS9Z4SxX4HydBtq7gmIZBmdemjArGFTkdggjyurQQ2cNQbWC7/epFKicHN656Y firmjJDiv8ZruibmCpVk6vWsBEXJbfRrqgRRrn4BzmMythTlIyJOTzFQ+NBjFOKxu6 AQDTYwmrgyejqUp43bl6PruEyeWSIlnC5bctkIys= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:33 +1100 Message-Id: <20180111045937.2119-8-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 07/11] ppc/pnv: change powernv_ prefix to pnv_ for overall naming consistency X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: C=C3=A9dric Le Goater The 'pnv' prefix is now used for all and the routines populating the device tree start with 'pnv_dt'. The handler of the PnvXScomInterface is also renamed to 'dt_xscom' which should reflect that it is populating the device tree under the 'xscom@' node of the chip. Signed-off-by: C=C3=A9dric Le Goater Signed-off-by: David Gibson --- hw/ppc/pnv.c | 94 ++++++++++++++++++++++--------------------= ---- hw/ppc/pnv_bmc.c | 2 +- hw/ppc/pnv_core.c | 8 ++-- hw/ppc/pnv_lpc.c | 6 +-- hw/ppc/pnv_psi.c | 4 +- hw/ppc/pnv_xscom.c | 10 ++--- include/hw/ppc/pnv.h | 10 ++--- include/hw/ppc/pnv_xscom.h | 4 +- 8 files changed, 67 insertions(+), 71 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 94ffc8e137..9475e8479c 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -77,8 +77,7 @@ static const char *pnv_chip_core_typename(const PnvChip *= o) * that has a different "affinity". In practice, it means one range * per chip. */ -static void powernv_populate_memory_node(void *fdt, int chip_id, hwaddr st= art, - hwaddr size) +static void pnv_dt_memory(void *fdt, int chip_id, hwaddr start, hwaddr siz= e) { char *mem_name; uint64_t mem_reg_property[2]; @@ -119,7 +118,7 @@ static int get_cpus_node(void *fdt) * device tree, used in XSCOM to address cores and in interrupt * servers. */ -static void powernv_create_core_node(PnvChip *chip, PnvCore *pc, void *fdt) +static void pnv_dt_core(PnvChip *chip, PnvCore *pc, void *fdt) { CPUState *cs =3D CPU(DEVICE(pc->threads)); DeviceClass *dc =3D DEVICE_GET_CLASS(cs); @@ -228,8 +227,8 @@ static void powernv_create_core_node(PnvChip *chip, Pnv= Core *pc, void *fdt) servers_prop, sizeof(servers_prop)))); } =20 -static void powernv_populate_icp(PnvChip *chip, void *fdt, uint32_t pir, - uint32_t nr_threads) +static void pnv_dt_icp(PnvChip *chip, void *fdt, uint32_t pir, + uint32_t nr_threads) { uint64_t addr =3D PNV_ICP_BASE(chip) | (pir << 12); char *name; @@ -277,13 +276,13 @@ static int pnv_chip_lpc_offset(PnvChip *chip, void *f= dt) return offset; } =20 -static void powernv_populate_chip(PnvChip *chip, void *fdt) +static void pnv_dt_chip(PnvChip *chip, void *fdt) { const char *typename =3D pnv_chip_core_typename(chip); size_t typesize =3D object_type_get_instance_size(typename); int i; =20 - pnv_xscom_populate(chip, fdt, 0); + pnv_dt_xscom(chip, fdt, 0); =20 /* The default LPC bus of a multichip system is on chip 0. It's * recognized by the firmware (skiboot) using a "primary" @@ -298,20 +297,18 @@ static void powernv_populate_chip(PnvChip *chip, void= *fdt) for (i =3D 0; i < chip->nr_cores; i++) { PnvCore *pnv_core =3D PNV_CORE(chip->cores + i * typesize); =20 - powernv_create_core_node(chip, pnv_core, fdt); + pnv_dt_core(chip, pnv_core, fdt); =20 /* Interrupt Control Presenters (ICP). One per core. */ - powernv_populate_icp(chip, fdt, pnv_core->pir, - CPU_CORE(pnv_core)->nr_threads); + pnv_dt_icp(chip, fdt, pnv_core->pir, CPU_CORE(pnv_core)->nr_thread= s); } =20 if (chip->ram_size) { - powernv_populate_memory_node(fdt, chip->chip_id, chip->ram_start, - chip->ram_size); + pnv_dt_memory(fdt, chip->chip_id, chip->ram_start, chip->ram_size); } } =20 -static void powernv_populate_rtc(ISADevice *d, void *fdt, int lpc_off) +static void pnv_dt_rtc(ISADevice *d, void *fdt, int lpc_off) { uint32_t io_base =3D d->ioport_id; uint32_t io_regs[] =3D { @@ -331,7 +328,7 @@ static void powernv_populate_rtc(ISADevice *d, void *fd= t, int lpc_off) _FDT((fdt_setprop_string(fdt, node, "compatible", "pnpPNP,b00"))); } =20 -static void powernv_populate_serial(ISADevice *d, void *fdt, int lpc_off) +static void pnv_dt_serial(ISADevice *d, void *fdt, int lpc_off) { const char compatible[] =3D "ns16550\0pnpPNP,501"; uint32_t io_base =3D d->ioport_id; @@ -362,7 +359,7 @@ static void powernv_populate_serial(ISADevice *d, void = *fdt, int lpc_off) _FDT((fdt_setprop_string(fdt, node, "device_type", "serial"))); } =20 -static void powernv_populate_ipmi_bt(ISADevice *d, void *fdt, int lpc_off) +static void pnv_dt_ipmi_bt(ISADevice *d, void *fdt, int lpc_off) { const char compatible[] =3D "bt\0ipmi-bt"; uint32_t io_base; @@ -401,17 +398,17 @@ typedef struct ForeachPopulateArgs { int offset; } ForeachPopulateArgs; =20 -static int powernv_populate_isa_device(DeviceState *dev, void *opaque) +static int pnv_dt_isa_device(DeviceState *dev, void *opaque) { ForeachPopulateArgs *args =3D opaque; ISADevice *d =3D ISA_DEVICE(dev); =20 if (object_dynamic_cast(OBJECT(dev), TYPE_MC146818_RTC)) { - powernv_populate_rtc(d, args->fdt, args->offset); + pnv_dt_rtc(d, args->fdt, args->offset); } else if (object_dynamic_cast(OBJECT(dev), TYPE_ISA_SERIAL)) { - powernv_populate_serial(d, args->fdt, args->offset); + pnv_dt_serial(d, args->fdt, args->offset); } else if (object_dynamic_cast(OBJECT(dev), "isa-ipmi-bt")) { - powernv_populate_ipmi_bt(d, args->fdt, args->offset); + pnv_dt_ipmi_bt(d, args->fdt, args->offset); } else { error_report("unknown isa device %s@i%x", qdev_fw_name(dev), d->ioport_id); @@ -420,7 +417,7 @@ static int powernv_populate_isa_device(DeviceState *dev= , void *opaque) return 0; } =20 -static void powernv_populate_isa(ISABus *bus, void *fdt, int lpc_offset) +static void pnv_dt_isa(ISABus *bus, void *fdt, int lpc_offset) { ForeachPopulateArgs args =3D { .fdt =3D fdt, @@ -429,14 +426,13 @@ static void powernv_populate_isa(ISABus *bus, void *f= dt, int lpc_offset) =20 /* ISA devices are not necessarily parented to the ISA bus so we * can not use object_child_foreach() */ - qbus_walk_children(BUS(bus), powernv_populate_isa_device, - NULL, NULL, NULL, &args); + qbus_walk_children(BUS(bus), pnv_dt_isa_device, NULL, NULL, NULL, &arg= s); } =20 -static void *powernv_create_fdt(MachineState *machine) +static void *pnv_dt_create(MachineState *machine) { const char plat_compat[] =3D "qemu,powernv\0ibm,powernv"; - PnvMachineState *pnv =3D POWERNV_MACHINE(machine); + PnvMachineState *pnv =3D PNV_MACHINE(machine); void *fdt; char *buf; int off; @@ -479,15 +475,15 @@ static void *powernv_create_fdt(MachineState *machine) =20 /* Populate device tree for each chip */ for (i =3D 0; i < pnv->num_chips; i++) { - powernv_populate_chip(pnv->chips[i], fdt); + pnv_dt_chip(pnv->chips[i], fdt); } =20 /* Populate ISA devices on chip 0 */ lpc_offset =3D pnv_chip_lpc_offset(pnv->chips[0], fdt); - powernv_populate_isa(pnv->isa_bus, fdt, lpc_offset); + pnv_dt_isa(pnv->isa_bus, fdt, lpc_offset); =20 if (pnv->bmc) { - pnv_bmc_populate_sensors(pnv->bmc, fdt); + pnv_dt_bmc_sensors(pnv->bmc, fdt); } =20 return fdt; @@ -495,17 +491,17 @@ static void *powernv_create_fdt(MachineState *machine) =20 static void pnv_powerdown_notify(Notifier *n, void *opaque) { - PnvMachineState *pnv =3D POWERNV_MACHINE(qdev_get_machine()); + PnvMachineState *pnv =3D PNV_MACHINE(qdev_get_machine()); =20 if (pnv->bmc) { pnv_bmc_powerdown(pnv->bmc); } } =20 -static void ppc_powernv_reset(void) +static void pnv_reset(void) { MachineState *machine =3D MACHINE(qdev_get_machine()); - PnvMachineState *pnv =3D POWERNV_MACHINE(machine); + PnvMachineState *pnv =3D PNV_MACHINE(machine); void *fdt; Object *obj; =20 @@ -524,7 +520,7 @@ static void ppc_powernv_reset(void) pnv->bmc =3D IPMI_BMC(obj); } =20 - fdt =3D powernv_create_fdt(machine); + fdt =3D pnv_dt_create(machine); =20 /* Pack resulting tree */ _FDT((fdt_pack(fdt))); @@ -552,9 +548,9 @@ static ISABus *pnv_isa_create(PnvChip *chip) return isa_bus; } =20 -static void ppc_powernv_init(MachineState *machine) +static void pnv_init(MachineState *machine) { - PnvMachineState *pnv =3D POWERNV_MACHINE(machine); + PnvMachineState *pnv =3D PNV_MACHINE(machine); MemoryRegion *ram; char *fw_filename; long fw_size; @@ -567,7 +563,7 @@ static void ppc_powernv_init(MachineState *machine) } =20 ram =3D g_new(MemoryRegion, 1); - memory_region_allocate_system_memory(ram, NULL, "ppc_powernv.ram", + memory_region_allocate_system_memory(ram, NULL, "pnv.ram", machine->ram_size); memory_region_add_subregion(get_system_memory(), 0, ram); =20 @@ -974,7 +970,7 @@ static void pnv_chip_class_init(ObjectClass *klass, voi= d *data) =20 static ICSState *pnv_ics_get(XICSFabric *xi, int irq) { - PnvMachineState *pnv =3D POWERNV_MACHINE(xi); + PnvMachineState *pnv =3D PNV_MACHINE(xi); int i; =20 for (i =3D 0; i < pnv->num_chips; i++) { @@ -987,7 +983,7 @@ static ICSState *pnv_ics_get(XICSFabric *xi, int irq) =20 static void pnv_ics_resend(XICSFabric *xi) { - PnvMachineState *pnv =3D POWERNV_MACHINE(xi); + PnvMachineState *pnv =3D PNV_MACHINE(xi); int i; =20 for (i =3D 0; i < pnv->num_chips; i++) { @@ -1021,7 +1017,7 @@ static ICPState *pnv_icp_get(XICSFabric *xi, int pir) static void pnv_pic_print_info(InterruptStatsProvider *obj, Monitor *mon) { - PnvMachineState *pnv =3D POWERNV_MACHINE(obj); + PnvMachineState *pnv =3D PNV_MACHINE(obj); int i; CPUState *cs; =20 @@ -1039,13 +1035,13 @@ static void pnv_pic_print_info(InterruptStatsProvid= er *obj, static void pnv_get_num_chips(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { - visit_type_uint32(v, name, &POWERNV_MACHINE(obj)->num_chips, errp); + visit_type_uint32(v, name, &PNV_MACHINE(obj)->num_chips, errp); } =20 static void pnv_set_num_chips(Object *obj, Visitor *v, const char *name, void *opaque, Error **errp) { - PnvMachineState *pnv =3D POWERNV_MACHINE(obj); + PnvMachineState *pnv =3D PNV_MACHINE(obj); uint32_t num_chips; Error *local_err =3D NULL; =20 @@ -1067,13 +1063,13 @@ static void pnv_set_num_chips(Object *obj, Visitor = *v, const char *name, pnv->num_chips =3D num_chips; } =20 -static void powernv_machine_initfn(Object *obj) +static void pnv_machine_initfn(Object *obj) { - PnvMachineState *pnv =3D POWERNV_MACHINE(obj); + PnvMachineState *pnv =3D PNV_MACHINE(obj); pnv->num_chips =3D 1; } =20 -static void powernv_machine_class_props_init(ObjectClass *oc) +static void pnv_machine_class_props_init(ObjectClass *oc) { object_class_property_add(oc, "num-chips", "uint32", pnv_get_num_chips, pnv_set_num_chips, @@ -1083,15 +1079,15 @@ static void powernv_machine_class_props_init(Object= Class *oc) NULL); } =20 -static void powernv_machine_class_init(ObjectClass *oc, void *data) +static void pnv_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); XICSFabricClass *xic =3D XICS_FABRIC_CLASS(oc); InterruptStatsProviderClass *ispc =3D INTERRUPT_STATS_PROVIDER_CLASS(o= c); =20 mc->desc =3D "IBM PowerNV (Non-Virtualized)"; - mc->init =3D ppc_powernv_init; - mc->reset =3D ppc_powernv_reset; + mc->init =3D pnv_init; + mc->reset =3D pnv_reset; mc->max_cpus =3D MAX_CPUS; mc->default_cpu_type =3D POWERPC_CPU_TYPE_NAME("power8_v2.0"); mc->block_default_type =3D IF_IDE; /* Pnv provides a AHCI device for @@ -1104,7 +1100,7 @@ static void powernv_machine_class_init(ObjectClass *o= c, void *data) xic->ics_resend =3D pnv_ics_resend; ispc->print_info =3D pnv_pic_print_info; =20 - powernv_machine_class_props_init(oc); + pnv_machine_class_props_init(oc); } =20 #define DEFINE_PNV_CHIP_TYPE(type, class_initfn) \ @@ -1116,11 +1112,11 @@ static void powernv_machine_class_init(ObjectClass = *oc, void *data) =20 static const TypeInfo types[] =3D { { - .name =3D TYPE_POWERNV_MACHINE, + .name =3D TYPE_PNV_MACHINE, .parent =3D TYPE_MACHINE, .instance_size =3D sizeof(PnvMachineState), - .instance_init =3D powernv_machine_initfn, - .class_init =3D powernv_machine_class_init, + .instance_init =3D pnv_machine_initfn, + .class_init =3D pnv_machine_class_init, .interfaces =3D (InterfaceInfo[]) { { TYPE_XICS_FABRIC }, { TYPE_INTERRUPT_STATS_PROVIDER }, diff --git a/hw/ppc/pnv_bmc.c b/hw/ppc/pnv_bmc.c index 7b60b4c360..b2cf441ee7 100644 --- a/hw/ppc/pnv_bmc.c +++ b/hw/ppc/pnv_bmc.c @@ -73,7 +73,7 @@ void pnv_bmc_powerdown(IPMIBmc *bmc) pnv_gen_oem_sel(bmc, SOFT_OFF); } =20 -void pnv_bmc_populate_sensors(IPMIBmc *bmc, void *fdt) +void pnv_dt_bmc_sensors(IPMIBmc *bmc, void *fdt) { int offset; int i; diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index 03317db853..7e8a76df44 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -37,7 +37,7 @@ static const char *pnv_core_cpu_typename(PnvCore *pc) return cpu_type; } =20 -static void powernv_cpu_reset(void *opaque) +static void pnv_cpu_reset(void *opaque) { PowerPCCPU *cpu =3D opaque; CPUState *cs =3D CPU(cpu); @@ -54,7 +54,7 @@ static void powernv_cpu_reset(void *opaque) env->msr |=3D MSR_HVB; /* Hypervisor mode */ } =20 -static void powernv_cpu_init(PowerPCCPU *cpu, Error **errp) +static void pnv_cpu_init(PowerPCCPU *cpu, Error **errp) { CPUPPCState *env =3D &cpu->env; int core_pir; @@ -73,7 +73,7 @@ static void powernv_cpu_init(PowerPCCPU *cpu, Error **err= p) /* Set time-base frequency to 512 MHz */ cpu_ppc_tb_init(env, PNV_TIMEBASE_FREQ); =20 - qemu_register_reset(powernv_cpu_reset, cpu); + qemu_register_reset(pnv_cpu_reset, cpu); } =20 /* @@ -139,7 +139,7 @@ static void pnv_core_realize_child(Object *child, XICSF= abric *xi, Error **errp) return; } =20 - powernv_cpu_init(cpu, &local_err); + pnv_cpu_init(cpu, &local_err); if (local_err) { error_propagate(errp, local_err); return; diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index f03a80a29b..b777b78e18 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -92,7 +92,7 @@ enum { #define LPC_HC_REGS_OPB_SIZE 0x00001000 =20 =20 -static int pnv_lpc_populate(PnvXScomInterface *dev, void *fdt, int xscom_o= ffset) +static int pnv_lpc_dt_xscom(PnvXScomInterface *dev, void *fdt, int xscom_o= ffset) { const char compat[] =3D "ibm,power8-lpc\0ibm,lpc"; char *name; @@ -482,7 +482,7 @@ static void pnv_lpc_class_init(ObjectClass *klass, void= *data) DeviceClass *dc =3D DEVICE_CLASS(klass); PnvXScomInterfaceClass *xdc =3D PNV_XSCOM_INTERFACE_CLASS(klass); =20 - xdc->populate =3D pnv_lpc_populate; + xdc->dt_xscom =3D pnv_lpc_dt_xscom; =20 dc->realize =3D pnv_lpc_realize; } @@ -515,7 +515,7 @@ type_init(pnv_lpc_register_types) */ static void pnv_lpc_isa_irq_handler_cpld(void *opaque, int n, int level) { - PnvMachineState *pnv =3D POWERNV_MACHINE(qdev_get_machine()); + PnvMachineState *pnv =3D PNV_MACHINE(qdev_get_machine()); uint32_t old_state =3D pnv->cpld_irqstate; PnvLpcController *lpc =3D PNV_LPC(opaque); =20 diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index 9876c26622..5b969127c3 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -510,7 +510,7 @@ static void pnv_psi_realize(DeviceState *dev, Error **e= rrp) } } =20 -static int pnv_psi_populate(PnvXScomInterface *dev, void *fdt, int xscom_o= ffset) +static int pnv_psi_dt_xscom(PnvXScomInterface *dev, void *fdt, int xscom_o= ffset) { const char compat[] =3D "ibm,power8-psihb-x\0ibm,psihb-x"; char *name; @@ -546,7 +546,7 @@ static void pnv_psi_class_init(ObjectClass *klass, void= *data) DeviceClass *dc =3D DEVICE_CLASS(klass); PnvXScomInterfaceClass *xdc =3D PNV_XSCOM_INTERFACE_CLASS(klass); =20 - xdc->populate =3D pnv_psi_populate; + xdc->dt_xscom =3D pnv_psi_dt_xscom; =20 dc->realize =3D pnv_psi_realize; dc->props =3D pnv_psi_properties; diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c index 38bc85f117..e51d634f40 100644 --- a/hw/ppc/pnv_xscom.c +++ b/hw/ppc/pnv_xscom.c @@ -207,15 +207,15 @@ typedef struct ForeachPopulateArgs { int xscom_offset; } ForeachPopulateArgs; =20 -static int xscom_populate_child(Object *child, void *opaque) +static int xscom_dt_child(Object *child, void *opaque) { if (object_dynamic_cast(child, TYPE_PNV_XSCOM_INTERFACE)) { ForeachPopulateArgs *args =3D opaque; PnvXScomInterface *xd =3D PNV_XSCOM_INTERFACE(child); PnvXScomInterfaceClass *xc =3D PNV_XSCOM_INTERFACE_GET_CLASS(xd); =20 - if (xc->populate) { - _FDT((xc->populate(xd, args->fdt, args->xscom_offset))); + if (xc->dt_xscom) { + _FDT((xc->dt_xscom(xd, args->fdt, args->xscom_offset))); } } return 0; @@ -224,7 +224,7 @@ static int xscom_populate_child(Object *child, void *op= aque) static const char compat_p8[] =3D "ibm,power8-xscom\0ibm,xscom"; static const char compat_p9[] =3D "ibm,power9-xscom\0ibm,xscom"; =20 -int pnv_xscom_populate(PnvChip *chip, void *fdt, int root_offset) +int pnv_dt_xscom(PnvChip *chip, void *fdt, int root_offset) { uint64_t reg[] =3D { cpu_to_be64(PNV_XSCOM_BASE(chip)), cpu_to_be64(PNV_XSCOM_SIZE) }; @@ -255,7 +255,7 @@ int pnv_xscom_populate(PnvChip *chip, void *fdt, int ro= ot_offset) args.fdt =3D fdt; args.xscom_offset =3D xscom_offset; =20 - object_child_foreach(OBJECT(chip), xscom_populate_child, &args); + object_child_foreach(OBJECT(chip), xscom_dt_child, &args); return 0; } =20 diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 59524cd42b..61896f9fd7 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -26,7 +26,7 @@ #include "hw/ppc/pnv_psi.h" #include "hw/ppc/pnv_occ.h" =20 -#define TYPE_PNV_CHIP "powernv-chip" +#define TYPE_PNV_CHIP "pnv-chip" #define PNV_CHIP(obj) OBJECT_CHECK(PnvChip, (obj), TYPE_PNV_CHIP) #define PNV_CHIP_CLASS(klass) \ OBJECT_CLASS_CHECK(PnvChipClass, (klass), TYPE_PNV_CHIP) @@ -117,9 +117,9 @@ typedef struct PnvChipClass { #define PNV_CHIP_INDEX(chip) \ (((chip)->chip_id >> 2) * 2 + ((chip)->chip_id & 0x3)) =20 -#define TYPE_POWERNV_MACHINE MACHINE_TYPE_NAME("powernv") -#define POWERNV_MACHINE(obj) \ - OBJECT_CHECK(PnvMachineState, (obj), TYPE_POWERNV_MACHINE) +#define TYPE_PNV_MACHINE MACHINE_TYPE_NAME("powernv") +#define PNV_MACHINE(obj) \ + OBJECT_CHECK(PnvMachineState, (obj), TYPE_PNV_MACHINE) =20 typedef struct PnvMachineState { /*< private >*/ @@ -144,7 +144,7 @@ typedef struct PnvMachineState { /* * BMC helpers */ -void pnv_bmc_populate_sensors(IPMIBmc *bmc, void *fdt); +void pnv_dt_bmc_sensors(IPMIBmc *bmc, void *fdt); void pnv_bmc_powerdown(IPMIBmc *bmc); =20 /* diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h index 38077b4796..7252e219e2 100644 --- a/include/hw/ppc/pnv_xscom.h +++ b/include/hw/ppc/pnv_xscom.h @@ -36,7 +36,7 @@ typedef struct PnvXScomInterface { =20 typedef struct PnvXScomInterfaceClass { InterfaceClass parent; - int (*populate)(PnvXScomInterface *dev, void *fdt, int offset); + int (*dt_xscom)(PnvXScomInterface *dev, void *fdt, int offset); } PnvXScomInterfaceClass; =20 /* @@ -67,7 +67,7 @@ typedef struct PnvXScomInterfaceClass { #define PNV_XSCOM_OCC_SIZE 0x6000 =20 extern void pnv_xscom_realize(PnvChip *chip, Error **errp); -extern int pnv_xscom_populate(PnvChip *chip, void *fdt, int offset); +extern int pnv_dt_xscom(PnvChip *chip, void *fdt, int offset); =20 extern void pnv_xscom_add_subregion(PnvChip *chip, hwaddr offset, MemoryRegion *mr); --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515647161718692.2659052167745; Wed, 10 Jan 2018 21:06:01 -0800 (PST) Received: from localhost ([::1]:40935 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV3w-0007CP-Qs for importer@patchew.org; Thu, 11 Jan 2018 00:06:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54137) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyO-00033j-3W for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyL-0000Mf-VY for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:16 -0500 Received: from ozlabs.org ([103.22.144.67]:42757) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyL-0000IA-HL; Thu, 11 Jan 2018 00:00:13 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFz0qL7z9t44; Thu, 11 Jan 2018 16:00:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646807; bh=l+3loFxoTSOlUwoGP0gm9UV1DaD8PIrHUCFLUxiZfL4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WoIBhzbpuEZrSSZYeqkEVhmzmBcHM9zW/A1Ph5H0CkwlVK0CBcG41fn4oy3sFCtm2 4n/0vy1lCN51wpse7rKEFqt9eCY0vPO5FgAE48DbqrXKNy8DAymcSw6wd/NJvi2MIc 6x+fpem7ytNoESCy5YWnVNOSoHZmVk4PdHkXONrE= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:34 +1100 Message-Id: <20180111045937.2119-9-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 08/11] target/ppc: more use of the PPC_*() macros X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: C=C3=A9dric Le Goater Also introduce utilities to manipulate bitmasks (originaly from OPAL) which be will be used in the model of the XIVE interrupt controller. Signed-off-by: C=C3=A9dric Le Goater Signed-off-by: David Gibson --- hw/ppc/pnv_lpc.c | 10 ++++----- target/ppc/cpu.h | 56 ++++++++++++++++++++++++++++++---------------= ---- target/ppc/int_helper.c | 2 +- 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index b777b78e18..c42b4a8f6c 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -146,13 +146,13 @@ static bool opb_write(PnvLpcController *lpc, uint32_t= addr, uint8_t *data, return success; } =20 -#define ECCB_CTL_READ (1ull << (63 - 15)) +#define ECCB_CTL_READ PPC_BIT(15) #define ECCB_CTL_SZ_LSH (63 - 7) -#define ECCB_CTL_SZ_MASK (0xfull << ECCB_CTL_SZ_LSH) -#define ECCB_CTL_ADDR_MASK 0xffffffffu; +#define ECCB_CTL_SZ_MASK PPC_BITMASK(4, 7) +#define ECCB_CTL_ADDR_MASK PPC_BITMASK(32, 63) =20 -#define ECCB_STAT_OP_DONE (1ull << (63 - 52)) -#define ECCB_STAT_OP_ERR (1ull << (63 - 52)) +#define ECCB_STAT_OP_DONE PPC_BIT(52) +#define ECCB_STAT_OP_ERR PPC_BIT(52) #define ECCB_STAT_RD_DATA_LSH (63 - 37) #define ECCB_STAT_RD_DATA_MASK (0xffffffff << ECCB_STAT_RD_DATA_LSH) =20 diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 370b05e76e..a5e49f23e9 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -93,6 +93,19 @@ #define PPC_BITMASK(bs, be) ((PPC_BIT(bs) - PPC_BIT(be)) | PPC_BIT(bs)) #define PPC_BITMASK32(bs, be) ((PPC_BIT32(bs) - PPC_BIT32(be)) | \ PPC_BIT32(bs)) +#define PPC_BITMASK8(bs, be) ((PPC_BIT8(bs) - PPC_BIT8(be)) | PPC_BIT8(= bs)) + +#if HOST_LONG_BITS =3D=3D 32 +# define MASK_TO_LSH(m) (__builtin_ffsll(m) - 1) +#elif HOST_LONG_BITS =3D=3D 64 +# define MASK_TO_LSH(m) (__builtin_ffsl(m) - 1) +#else +# error Unknown sizeof long +#endif + +#define GETFIELD(m, v) (((v) & (m)) >> MASK_TO_LSH(m)) +#define SETFIELD(m, v, val) \ + (((v) & ~(m)) | ((((typeof(v))(val)) << MASK_TO_LSH(m)) & (m))) =20 /*************************************************************************= ****/ /* Exception vectors definitions = */ @@ -2349,32 +2362,31 @@ enum { =20 /* Processor Compatibility mask (PCR) */ enum { - PCR_COMPAT_2_05 =3D 1ull << (63-62), - PCR_COMPAT_2_06 =3D 1ull << (63-61), - PCR_COMPAT_2_07 =3D 1ull << (63-60), - PCR_COMPAT_3_00 =3D 1ull << (63-59), - PCR_VEC_DIS =3D 1ull << (63-0), /* Vec. disable (bit NA since = POWER8) */ - PCR_VSX_DIS =3D 1ull << (63-1), /* VSX disable (bit NA since P= OWER8) */ - PCR_TM_DIS =3D 1ull << (63-2), /* Trans. memory disable (POWE= R8) */ + PCR_COMPAT_2_05 =3D PPC_BIT(62), + PCR_COMPAT_2_06 =3D PPC_BIT(61), + PCR_COMPAT_2_07 =3D PPC_BIT(60), + PCR_COMPAT_3_00 =3D PPC_BIT(59), + PCR_VEC_DIS =3D PPC_BIT(0), /* Vec. disable (bit NA since POWE= R8) */ + PCR_VSX_DIS =3D PPC_BIT(1), /* VSX disable (bit NA since POWER= 8) */ + PCR_TM_DIS =3D PPC_BIT(2), /* Trans. memory disable (POWER8) = */ }; =20 /* HMER/HMEER */ enum { - HMER_MALFUNCTION_ALERT =3D 1ull << (63 - 0), - HMER_PROC_RECV_DONE =3D 1ull << (63 - 2), - HMER_PROC_RECV_ERROR_MASKED =3D 1ull << (63 - 3), - HMER_TFAC_ERROR =3D 1ull << (63 - 4), - HMER_TFMR_PARITY_ERROR =3D 1ull << (63 - 5), - HMER_XSCOM_FAIL =3D 1ull << (63 - 8), - HMER_XSCOM_DONE =3D 1ull << (63 - 9), - HMER_PROC_RECV_AGAIN =3D 1ull << (63 - 11), - HMER_WARN_RISE =3D 1ull << (63 - 14), - HMER_WARN_FALL =3D 1ull << (63 - 15), - HMER_SCOM_FIR_HMI =3D 1ull << (63 - 16), - HMER_TRIG_FIR_HMI =3D 1ull << (63 - 17), - HMER_HYP_RESOURCE_ERR =3D 1ull << (63 - 20), - HMER_XSCOM_STATUS_MASK =3D 7ull << (63 - 23), - HMER_XSCOM_STATUS_LSH =3D (63 - 23), + HMER_MALFUNCTION_ALERT =3D PPC_BIT(0), + HMER_PROC_RECV_DONE =3D PPC_BIT(2), + HMER_PROC_RECV_ERROR_MASKED =3D PPC_BIT(3), + HMER_TFAC_ERROR =3D PPC_BIT(4), + HMER_TFMR_PARITY_ERROR =3D PPC_BIT(5), + HMER_XSCOM_FAIL =3D PPC_BIT(8), + HMER_XSCOM_DONE =3D PPC_BIT(9), + HMER_PROC_RECV_AGAIN =3D PPC_BIT(11), + HMER_WARN_RISE =3D PPC_BIT(14), + HMER_WARN_FALL =3D PPC_BIT(15), + HMER_SCOM_FIR_HMI =3D PPC_BIT(16), + HMER_TRIG_FIR_HMI =3D PPC_BIT(17), + HMER_HYP_RESOURCE_ERR =3D PPC_BIT(20), + HMER_XSCOM_STATUS_MASK =3D PPC_BITMASK(21, 23), }; =20 /* Alternate Interrupt Location (AIL) */ diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index 1c013a0ee3..3a50f1e1b7 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -183,7 +183,7 @@ uint64_t helper_bpermd(uint64_t rs, uint64_t rb) for (i =3D 0; i < 8; i++) { int index =3D (rs >> (i*8)) & 0xFF; if (index < 64) { - if (rb & (1ull << (63-index))) { + if (rb & PPC_BIT(index)) { ra |=3D 1 << i; } } --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515646961791811.7831608409758; Wed, 10 Jan 2018 21:02:41 -0800 (PST) Received: from localhost ([::1]:40912 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV0d-0004UQ-C2 for importer@patchew.org; Thu, 11 Jan 2018 00:02:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54128) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyN-00033N-Td for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyM-0000NQ-Fk for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:15 -0500 Received: from ozlabs.org ([2401:3900:2:1::2]:55895) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyL-0000Hq-OI; Thu, 11 Jan 2018 00:00:14 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFy6cZWz9t3m; Thu, 11 Jan 2018 16:00:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646806; bh=k8V0H5Bi8xidDhCB4jwWNIBJGbAQw6tRJuQTdtLEdwQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Nl2pDTX+EBGSXx+qYfOogfScSQ9zGJM39/CskLhCMo77lM4cM2QcvPDk7GNFuThqU BQ1irraWDIufhd6mJAP5UJEJzY585MxK6NbXmMPvMakZkX4GFnyxYT13Rx1eokS7Ke +06v/0OiUWK+yhPSS3DZLXlz0c3UD/2FJ5B72QxI= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:35 +1100 Message-Id: <20180111045937.2119-10-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 09/11] Update dtc to fix compilation problem on Mac OS 10.6 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, John Arbuckle , qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: John Arbuckle Currently QEMU does not build on Mac OS 10.6 because of a missing patch in the dtc subproject. Updating dtc to make the patch available fixes this problem. Signed-off-by: John Arbuckle Signed-off-by: David Gibson --- dtc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dtc b/dtc index 558cd81bdd..e54388015a 160000 --- a/dtc +++ b/dtc @@ -1 +1 @@ -Subproject commit 558cd81bdd432769b59bff01240c44f82cfb1a9d +Subproject commit e54388015af1fb4bf04d0bca99caba1074d9cc42 --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515647137387214.73551365770186; Wed, 10 Jan 2018 21:05:37 -0800 (PST) Received: from localhost ([::1]:40928 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV3Y-0006pt-HP for importer@patchew.org; Thu, 11 Jan 2018 00:05:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54127) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyN-00033M-TV for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyM-0000Nr-I4 for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:15 -0500 Received: from ozlabs.org ([2401:3900:2:1::2]:44919) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyL-0000I0-Qq; Thu, 11 Jan 2018 00:00:14 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFz4ggwz9t50; Thu, 11 Jan 2018 16:00:06 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646807; bh=DLmYlEZSd+oZaQu6JSbpMA1JB0ycXbzLcNtRDSj7un4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ey5dox1U+hxX8AviWjJ1Rz3Bl6hgvZot+d9AnhONshZjYv0x5UXD02AwRhfeq+4ez aPQxC4ZNO9Q576PAVwdpQu3BgwW/B/amBkOsKdhnEMLULZHg03Jr8Y3Y6X4i9c3QwO vSd+AeI/ni1Cm7bndR5EhCjZGvyjuE109YwcB+Zc= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:36 +1100 Message-Id: <20180111045937.2119-11-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 10/11] hw/ppc: Remove the deprecated spapr-pci-vfio-host-bridge device X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, Thomas Huth , surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Thomas Huth It's a deprecated dummy device since QEMU v2.6.0. That should have been enough time to allow the users to update their scripts in case they still use it, so let's remove this legacy code now. Reviewed-by: Alexey Kardashevskiy Signed-off-by: Thomas Huth Signed-off-by: David Gibson --- hw/ppc/spapr_pci_vfio.c | 47 -------------------------------------------= ---- qemu-doc.texi | 5 ----- scripts/device-crash-test | 1 - 3 files changed, 53 deletions(-) diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c index 1f775ea93d..053efb03bd 100644 --- a/hw/ppc/spapr_pci_vfio.c +++ b/hw/ppc/spapr_pci_vfio.c @@ -29,31 +29,6 @@ #include "qemu/error-report.h" #include "sysemu/qtest.h" =20 -#define TYPE_SPAPR_PCI_VFIO_HOST_BRIDGE "spapr-pci-vfio-host-bridge" - -#define SPAPR_PCI_VFIO_HOST_BRIDGE(obj) \ - OBJECT_CHECK(sPAPRPHBVFIOState, (obj), TYPE_SPAPR_PCI_VFIO_HOST_BRIDGE) - -typedef struct sPAPRPHBVFIOState sPAPRPHBVFIOState; - -struct sPAPRPHBVFIOState { - sPAPRPHBState phb; - - int32_t iommugroupid; -}; - -static Property spapr_phb_vfio_properties[] =3D { - DEFINE_PROP_INT32("iommu", sPAPRPHBVFIOState, iommugroupid, -1), - DEFINE_PROP_END_OF_LIST(), -}; - -static void spapr_phb_vfio_instance_init(Object *obj) -{ - if (!qtest_enabled()) { - warn_report("spapr-pci-vfio-host-bridge is deprecated"); - } -} - bool spapr_phb_eeh_available(sPAPRPHBState *sphb) { return vfio_eeh_as_ok(&sphb->iommu_as); @@ -218,25 +193,3 @@ int spapr_phb_vfio_eeh_configure(sPAPRPHBState *sphb) =20 return RTAS_OUT_SUCCESS; } - -static void spapr_phb_vfio_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - - dc->props =3D spapr_phb_vfio_properties; -} - -static const TypeInfo spapr_phb_vfio_info =3D { - .name =3D TYPE_SPAPR_PCI_VFIO_HOST_BRIDGE, - .parent =3D TYPE_SPAPR_PCI_HOST_BRIDGE, - .instance_size =3D sizeof(sPAPRPHBVFIOState), - .instance_init =3D spapr_phb_vfio_instance_init, - .class_init =3D spapr_phb_vfio_class_init, -}; - -static void spapr_pci_vfio_register_types(void) -{ - type_register_static(&spapr_phb_vfio_info); -} - -type_init(spapr_pci_vfio_register_types) diff --git a/qemu-doc.texi b/qemu-doc.texi index 9d0159832e..a3d2054c90 100644 --- a/qemu-doc.texi +++ b/qemu-doc.texi @@ -2757,11 +2757,6 @@ The ``host_net_remove'' command is replaced by the `= `netdev_del'' command. The ``ivshmem'' device type is replaced by either the ``ivshmem-plain'' or ``ivshmem-doorbell`` device types. =20 -@subsection spapr-pci-vfio-host-bridge (since 2.6.0) - -The ``spapr-pci-vfio-host-bridge'' device type is replaced by -the ``spapr-pci-host-bridge'' device type. - @section System emulator machines =20 @subsection Xilinx EP108 (since 2.11.0) diff --git a/scripts/device-crash-test b/scripts/device-crash-test index c11fd81c52..827d8ec2af 100755 --- a/scripts/device-crash-test +++ b/scripts/device-crash-test @@ -119,7 +119,6 @@ ERROR_WHITELIST =3D [ {'device':'scsi-generic', 'expected':True}, # drive propert= y not set {'device':'scsi-hd', 'expected':True}, # drive propert= y not set {'device':'spapr-pci-host-bridge', 'expected':True}, # BUID not spec= ified for PHB - {'device':'spapr-pci-vfio-host-bridge', 'expected':True}, # BUID not s= pecified for PHB {'device':'spapr-rng', 'expected':True}, # spapr-rng nee= ds an RNG backend! {'device':'spapr-vty', 'expected':True}, # chardev prope= rty not set {'device':'tpm-tis', 'expected':True}, # tpm_tis: back= end driver with id (null) could not be found --=20 2.14.3 From nobody Thu Apr 25 01:42:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515647323720767.3986042753336; Wed, 10 Jan 2018 21:08:43 -0800 (PST) Received: from localhost ([::1]:41154 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZV6Q-0001pj-By for importer@patchew.org; Thu, 11 Jan 2018 00:08:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54134) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eZUyO-00033g-2h for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eZUyL-0000Ml-VR for qemu-devel@nongnu.org; Thu, 11 Jan 2018 00:00:16 -0500 Received: from ozlabs.org ([103.22.144.67]:59907) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eZUyL-0000IJ-JH; Thu, 11 Jan 2018 00:00:13 -0500 Received: by ozlabs.org (Postfix, from userid 1007) id 3zHDFz3DjZz9t3w; Thu, 11 Jan 2018 16:00:07 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1515646807; bh=QVKFX3f8uj64JhZhhJ/bDuBVA1nqf57+NhW7p97TTB8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BAFpt+l/aaSLKMK73AZdh8uCdKj/EHh7c+nI2DjIQfHVME4BJWtsEEA/VBr132vU3 lw5cLJowS0lJ9CBUvM3Yn/31pulD+LHih3EV5iCWc6NPDuqCiT8VCc8Y8TLpk35VgK r7ROmmMCvF3CZVQyfegXT6nDtGLzChxQn6QH6GyY= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 Jan 2018 15:59:37 +1100 Message-Id: <20180111045937.2119-12-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111045937.2119-1-david@gibson.dropbear.id.au> References: <20180111045937.2119-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 11/11] spapr: Correct compatibility mode setting for hotplugged CPUs X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, surajjs@au1.ibm.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, groug@kaod.org, qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently the pseries machine sets the compatibility mode for the guest's cpus in two places: 1) at machine reset and 2) after CAS negotiation. This means that if we set or negotiate a compatiblity mode, then hotplug a cpu, the hotplugged cpu doesn't get the right mode set and will incorrectly have the full native features. To correct this, we set the compatibility mode on a cpu when it is brought online with the 'start-cpu' RTAS call. Given that we no longer need to set the compatibility mode on all CPUs at machine reset, so we change that to only set the mode for the boot cpu. Signed-off-by: David Gibson Reported-by: Satheesh Rajendran Tested-by: Satheesh Rajendran Reviewed-by: Alexey Kardashevskiy --- hw/ppc/spapr.c | 2 +- hw/ppc/spapr_rtas.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 6785a90c60..dfd352c473 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1504,7 +1504,7 @@ static void spapr_machine_reset(void) spapr_ovec_cleanup(spapr->ov5_cas); spapr->ov5_cas =3D spapr_ovec_new(); =20 - ppc_set_compat_all(spapr->max_compat_pvr, &error_fatal); + ppc_set_compat(first_ppc_cpu, spapr->max_compat_pvr, &error_fatal); } =20 fdt =3D spapr_build_fdt(spapr, rtas_addr, spapr->rtas_size); diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c index 4bb939d3d1..2b89e1d448 100644 --- a/hw/ppc/spapr_rtas.c +++ b/hw/ppc/spapr_rtas.c @@ -163,6 +163,7 @@ static void rtas_start_cpu(PowerPCCPU *cpu_, sPAPRMachi= neState *spapr, CPUState *cs =3D CPU(cpu); CPUPPCState *env =3D &cpu->env; PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); + Error *local_err =3D NULL; =20 if (!cs->halted) { rtas_st(rets, 0, RTAS_OUT_HW_ERROR); @@ -174,6 +175,14 @@ static void rtas_start_cpu(PowerPCCPU *cpu_, sPAPRMach= ineState *spapr, * new cpu enters */ kvm_cpu_synchronize_state(cs); =20 + /* Set compatibility mode to match existing cpus */ + ppc_set_compat(cpu, POWERPC_CPU(first_cpu)->compat_pvr, &local_err= ); + if (local_err) { + error_report_err(local_err); + rtas_st(rets, 0, RTAS_OUT_HW_ERROR); + return; + } + env->msr =3D (1ULL << MSR_SF) | (1ULL << MSR_ME); =20 /* Enable Power-saving mode Exit Cause exceptions for the new CPU = */ --=20 2.14.3