From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975288; cv=none; d=zohomail.com; s=zohoarc; b=Q+ByAe/rH4M5o94/b6UKp71145aCNkE3wWBvJkFT3K4l6oHee/4Pw7h3rNCN/jgpGcmZmvg5wbebanxqF4u96Hc8d6hcyMSKOfSafiJGrjrANpD+jpdUV6QQG9igWbvLXxHPmFnkbqv3B8RXvLynL97Isf5J745DgJNTdex87pA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975288; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EzkPvmu7MHFKAfaex8a55ZZ/l01OAJQ4OKdCLzrVLGE=; b=TVy9PVIZHqOjcAos/k02TCEt6/4JUCofhzweWEki0NiZONkAWnZ/nVMVlNXpsOrnBmVuCArEyiie9FshhrJ5XaS5eVW53LTcGRnqmwArq0MxuVQe7gkDCrL1telgH8m6Yf7yPc5j4T66RB5CNZWFZ/XQ8ti5fV7lGsu/pVMvqbc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166697528829693.66231969569958; Fri, 28 Oct 2022 09:41:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSP4-0002uW-4A; Fri, 28 Oct 2022 12:40:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSOx-0002fj-1v; Fri, 28 Oct 2022 12:40:11 -0400 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSOs-0007gO-3Z; Fri, 28 Oct 2022 12:40:10 -0400 Received: by mail-ot1-x329.google.com with SMTP id 16-20020a9d0490000000b0066938311495so3272262otm.4; Fri, 28 Oct 2022 09:40:05 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EzkPvmu7MHFKAfaex8a55ZZ/l01OAJQ4OKdCLzrVLGE=; b=qUGVDffF8taq+moTbeZgAhW0p5IKB/ZGgISbyCSyP3MD9AK796s5x2NqopgvGHafwJ 28SWN8Yma0jCP21hsDHtB3L6CwB/bHobELkqoZu6OGBmxHkWatTqo1Ly5+92qFQuoglI vD8FPZzcr4sUHxk5mscoJfGZrDfScSC/ZtPlRATtWIJEgNGiL4xHvq5NApsq4hFdXkqr fFF+jHwdCI8aK3vrhxzDoHPPHZ/iBb8v+44mLfvFNx1425v/KtIOFPh1noWpZoAkMWNZ tLUZyya6ieWG+SrYdqHOE0TRPlRX6fSO7gvpOpUmdZRls8IBr8yKGhRZcoelpPyGNFZH /E1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EzkPvmu7MHFKAfaex8a55ZZ/l01OAJQ4OKdCLzrVLGE=; b=nRcR0DxZ10sh8ULrgSIqhGI3PW2Zuns+UjNKlpFj2Qh7/jd5zc/8RxxDyRGpn4waNH 2gh+AjbHM+uKTnmf2d9NZhZ25R/6s4aGzUwN2Jd1H/aPFH5FYHE5b3TlV4RY07IrXBWH jeqy+390lx0QBoEuynnmUnMuDmqq8O2tTUVw39gVW5n27MIA8N9/ZJlYOAxgAeiLLQtp V4zNKJB8NJS9yE/K+OJBJ9pubTRl7/dHatsJwy5nTaMEkGPb+X+LTC99W+aIVNXx7NmC JBFJzQJpS1Kwx1wr63f3TBdP7PNVPCdpEzjJkhSt11aJfv6ZMAIUXyyca8dVGzI46p9P KpUg== X-Gm-Message-State: ACrzQf16ZxqOSD3nU1FORew9L4f4nrG2vp7whUvuyNVIagBeaJ+BuHCC 3Pumjf0D9DWeN+e/erJ3Vc53qAb1O0U6TA== X-Google-Smtp-Source: AMsMyM6tzpgBa2cuulnR+kx8fuSxotJXzI8C3nJv7X2Y2GvV51G+RYP49FXV0ymvSSy3N+Ugthw+4g== X-Received: by 2002:a9d:12a6:0:b0:661:d26c:708c with SMTP id g35-20020a9d12a6000000b00661d26c708cmr119750otg.160.1666975204209; Fri, 28 Oct 2022 09:40:04 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 01/62] target/ppc: fix msgclr/msgsnd insns flags Date: Fri, 28 Oct 2022 13:38:50 -0300 Message-Id: <20221028163951.810456-2-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::329; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x329.google.com X-Spam_score_int: -13 X-Spam_score: -1.4 X-Spam_bar: - X-Spam_report: (-1.4 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975289367100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst On Power ISA v2.07, the category for these instructions became "Embedded.Processor Control" or "Book S". Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221006200654.725390-2-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 7228857e23..b5d80fd13d 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -6902,9 +6902,9 @@ GEN_HANDLER2_E(tlbivax_booke206, "tlbivax", 0x1F, 0x1= 2, 0x18, 0x00000001, GEN_HANDLER2_E(tlbilx_booke206, "tlbilx", 0x1F, 0x12, 0x00, 0x03800001, PPC_NONE, PPC2_BOOKE206), GEN_HANDLER2_E(msgsnd, "msgsnd", 0x1F, 0x0E, 0x06, 0x03ff0001, - PPC_NONE, PPC2_PRCNTL), + PPC_NONE, (PPC2_PRCNTL | PPC2_ISA207S)), GEN_HANDLER2_E(msgclr, "msgclr", 0x1F, 0x0E, 0x07, 0x03ff0001, - PPC_NONE, PPC2_PRCNTL), + PPC_NONE, (PPC2_PRCNTL | PPC2_ISA207S)), GEN_HANDLER2_E(msgsync, "msgsync", 0x1F, 0x16, 0x1B, 0x00000000, PPC_NONE, PPC2_PRCNTL), GEN_HANDLER(wrtee, 0x1F, 0x03, 0x04, 0x000FFC01, PPC_WRTEE), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975352; cv=none; d=zohomail.com; s=zohoarc; b=Rr546OfB2FxZFrzm+OgKUKn2P5c2nY50pbHm8eVFdXpWDnRCiX1hAx5gH4lLqHSZ5UA6x2QqTn4ELZeSNM9lQpJzsEA2h41SwoWTKR++VhPJ6nRvSbFyWqusut8zXKnk7vwxW/MhKkeENwpqRCPP40m66EpU1DCWnBK56ZRzlR8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975352; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fdJRlWYTcqL6ucLnfTqsjUj0hGbhOme3aoszJHaNXTA=; b=nu5i+BvDlF5KNAG9sEoJOBWJOzmUQfCs/eOiIH8XMQ/GPtRKRJ1es8cC85CyX3rgubmsNqxsM1zIiCzGqfi23nRYZchekpUyUFqB9axnr5nROH00QnYOKcyjWKjk+Vv4R6IRUZ9v6MGgN8e7pQ3HmADboihIXZOXpUOBykT4wro= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975352040522.2553440917095; Fri, 28 Oct 2022 09:42:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSPL-0004kf-29; Fri, 28 Oct 2022 12:40:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSOy-0002ps-Ld; Fri, 28 Oct 2022 12:40:16 -0400 Received: from mail-oa1-x30.google.com ([2001:4860:4864:20::30]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSOw-0007iN-Ux; Fri, 28 Oct 2022 12:40:12 -0400 Received: by mail-oa1-x30.google.com with SMTP id 586e51a60fabf-13b6c1c89bdso6831072fac.13; Fri, 28 Oct 2022 09:40:10 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fdJRlWYTcqL6ucLnfTqsjUj0hGbhOme3aoszJHaNXTA=; b=LJ0EtsospRFlV+Xh5w3BPAs9svbkF9GJJxOjQk/vnx9PsjOSfzOJgK0rFqhHO7gTgI epp6QCg4hzS/rKeBkdMdgOlUipUO6uDdUvVnecZVC/uoLZG5PLWnjiaIIPHxX1ihje6u Rnz+3FYN1+zIlfyFkZ61umKRDw7nTvXU++SbxL14qBFrOKTIIs+fPM95n1ldxDUP93e4 WOVjcby5jlnZYNeB03/RBYIBFyzQshq7TpjHeIJdTXdyh5UegRUol8oU+FLf8LmrG11q FI4FKlzsxkdKFxPv0/26hbaLK/fR9MpeFGPMdJIzbD3+4vTfFXxEhX/gxVFGCwlg69Yz hg3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fdJRlWYTcqL6ucLnfTqsjUj0hGbhOme3aoszJHaNXTA=; b=VzR148N51j4JofrJKV+Wtclwz0IZbzOXIwvJ0T6mB8Nr6MUbFDyU+m9K8KKpEyEmCk DwlXvTmgCGkJdaXQf7jynp6jXcAqs0e76hsPvabJretVJxzC6LRmydVUlMSkpHPYRkhx Ymq96/Q4RZzKBP7j4pKpucO1DYVa6BR0wo9mJ8fHpUrd1Vr2axZ9nh1D4EvdWx/HeXLK ud4Dyk0tHEB2EgkKB8C/o41gUJ2lnn/MKtjD3jiE1uR1W6y+9Ju6vrHtCmN9m94Gjniz 2RlgMQZvguA3WGiXcBNNLkP0z5zddmoZPRoVh9JqidwCWdbF6ephYeWCVyfPXuyT9hk1 WgUA== X-Gm-Message-State: ACrzQf3PGJB9wAbIdwOmZJ07Vjf17qXcgMFS52mdNSpOr/Gf/eZUJlNX ZjiwgFXaAVPtrNpyCC5fXIHwihsldVAbcw== X-Google-Smtp-Source: AMsMyM5e/7f8qTdzJc9clEnswd/yt32hPitWWOTu8+3OSxVE1hDLwUzeIKTLqDHeHBKD6+mOswXkzw== X-Received: by 2002:a05:6870:612c:b0:132:a4d3:e0d8 with SMTP id s44-20020a056870612c00b00132a4d3e0d8mr10329oae.95.1666975208910; Fri, 28 Oct 2022 09:40:08 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 02/62] target/ppc: fix msgsync insns flags Date: Fri, 28 Oct 2022 13:38:51 -0300 Message-Id: <20221028163951.810456-3-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::30; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x30.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975353145100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst This instruction was added by Power ISA 3.0, using PPC2_PRCNTL makes it available for older processors, like de e5500 and e6500. Fixes: 7af1e7b02264 ("target/ppc: add support for hypervisor doorbells on b= ook3s CPUs") Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221006200654.725390-3-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index b5d80fd13d..ccf2ffd567 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -6906,7 +6906,7 @@ GEN_HANDLER2_E(msgsnd, "msgsnd", 0x1F, 0x0E, 0x06, 0x= 03ff0001, GEN_HANDLER2_E(msgclr, "msgclr", 0x1F, 0x0E, 0x07, 0x03ff0001, PPC_NONE, (PPC2_PRCNTL | PPC2_ISA207S)), GEN_HANDLER2_E(msgsync, "msgsync", 0x1F, 0x16, 0x1B, 0x00000000, - PPC_NONE, PPC2_PRCNTL), + PPC_NONE, PPC2_ISA300), GEN_HANDLER(wrtee, 0x1F, 0x03, 0x04, 0x000FFC01, PPC_WRTEE), GEN_HANDLER(wrteei, 0x1F, 0x03, 0x05, 0x000E7C01, PPC_WRTEE), GEN_HANDLER(dlmzb, 0x1F, 0x0E, 0x02, 0x00000000, PPC_440_SPEC), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975333; cv=none; d=zohomail.com; s=zohoarc; b=nUR+Ugvdz7aWHJTKNd6A+/pc8Q7K6juZbnSn8oeUxAgEOoyXOZBy2o7NcnsoptqWsSUfb4J/PgV6HOEFZh6BTvLJFL5uw/vJrnaBxEYzNf8k2SDEc9p8KImi5b2YCuU1IcKVDk8MzJDMwu29hbNDNxPV+bRcivfVaeG2GbZcNbE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975333; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kesQ4O7GHSfLA7oFoVmvKFfpde6zZU42AJgjgBx5tTg=; b=j4LpKhxwzCemolyGHTjnID270Q/Hbum+L7P+fXx42BB6aX0Yq0hsnoauoonBtEyEsnxTqQGjXcK9OB6Y7FTW8HoBA0U5d7011Y2BNr410KRECBhbwP9aQEl2r6Pk7DBCTeyFaIvVmJQyEsGdAxF5+TTsJJ3bH1pmfREnXvUeW5I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975333187107.54653303932616; Fri, 28 Oct 2022 09:42:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSPM-0004t9-7e; Fri, 28 Oct 2022 12:40:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSP3-0003Nk-Rq; Fri, 28 Oct 2022 12:40:18 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSP2-0007kb-An; Fri, 28 Oct 2022 12:40:17 -0400 Received: by mail-ot1-x334.google.com with SMTP id d18-20020a05683025d200b00661c6f1b6a4so3278301otu.1; Fri, 28 Oct 2022 09:40:15 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kesQ4O7GHSfLA7oFoVmvKFfpde6zZU42AJgjgBx5tTg=; b=LhS3Fes307fywaL815fLjNOszPdkZsc35wm3PE4iTqggVBtqKpc2KIDSuEj5R7CT5B TNYCLV/O/k506zZ2fIsH4ja3OCm17ehOM2gGVWYNrwKBqYoMfRn+Fpu/a7WdWJQQsl8f q1R28VyxyWYF2+/HEJlnRclqPfygrqWkjIw4N83Zc6fixJSV+UWPujloVVm5RJ0Gq2vZ 76K2fEwts/fV1OhKAuwUZZJMMMl7HYkyqaDfqnJon3EtO6W2EeGkdtFc+D9xkELDDCuk 1Z0wX5q3GD2I4+/QES9vyhVs4Z70EdV/ut/b1XBooE+/rjKU0RfpsJr7vztKo85NlreA pnYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kesQ4O7GHSfLA7oFoVmvKFfpde6zZU42AJgjgBx5tTg=; b=tjYHDIl/oEugQZsXQLasPwXnQTNoPff057mUc3RjRK5lsTOXX3DsqnozegQJs+x6Kh czGWL1Ctv5E0SSckCsuZA3xxwQtJPusKW7NsIKMh6RaaUumxIXPK2pPabJAJ/UGftWCb +NEOHG0aOHozkWI2Y/6X7wws/te94DxL9oPx3U6hhul15gTPokfZ0Q1xM319dlv2bfB+ AoEerhLHiGwKSI5PnskMjKe9FOGTSJdAo/gnnIN8FUK/Lkt9AFTRJjkdidVckYyy3EXX vVI6f3fjGE4/L/ARlWO9ym8dabHTrZV7A6CdIMqRvgQcgMKvuWUSHUDoNHjvj4vYUaue 6Y1Q== X-Gm-Message-State: ACrzQf3SUpiNdokocAxhiBhu0XBGflaMm1WTnq+hBXW9zCSNlbitATR5 Z5P5tsc5yfR0rFfPoeMx8xTK2DuAqecs6Q== X-Google-Smtp-Source: AMsMyM66U1ARXpBqmKrlBm4tx0HjypZl+yJoAtKa2V1XBPOEG3i6C399I+PwVwImKCv6+RsBzmYOBg== X-Received: by 2002:a9d:5d10:0:b0:661:1106:6cee with SMTP id b16-20020a9d5d10000000b0066111066ceemr113757oti.362.1666975214306; Fri, 28 Oct 2022 09:40:14 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 03/62] target/ppc: fix REQUIRE_HV macro definition Date: Fri, 28 Oct 2022 13:38:52 -0300 Message-Id: <20221028163951.810456-4-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::334; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x334.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975334954100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst The macro is missing a '{' after the if condition. Any use of REQUIRE_HV would cause a compilation error. Fixes: fc34e81acd51 ("target/ppc: add macros to check privilege level") Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221006200654.725390-4-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/translate.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index ccf2ffd567..f73ff2d2ee 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -6545,12 +6545,12 @@ static int64_t dw_compose_ea(DisasContext *ctx, int= x) } \ } while (0) =20 -#define REQUIRE_HV(CTX) \ - do { \ - if (unlikely((CTX)->pr || !(CTX)->hv)) \ - gen_priv_opc(CTX); \ - return true; \ - } \ +#define REQUIRE_HV(CTX) \ + do { \ + if (unlikely((CTX)->pr || !(CTX)->hv)) { \ + gen_priv_opc(CTX); \ + return true; \ + } \ } while (0) #else #define REQUIRE_SV(CTX) do { gen_priv_opc(CTX); return true; } while (0) --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975412; cv=none; d=zohomail.com; s=zohoarc; b=DJddyLACmi6ubnD5+sFuqX6FEWD9oX/FDnpoESG6BHORwLfGvyBtdretd7j1gEbi7VmisBcfHx18VD68Aq/bxOCbmaRjuwykgE1pGf3ns7vrPe+lnrvmHzv9hu9xCzaWt+WEcFaIAQkGIptk2JcyUzXCT6wPK2GKo6VHgGQFj1U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975412; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lMbH8BdSoM5L6/MCFulS4esl/l8+JuB7NAjtoPNa4iU=; b=bWOec0Q78kGEtyeZF2yiaEdOWm4sFKiGvfhzaG8JR+RiiK4XuL7L2UqfS3M5QWPhSBwWu0q3erxw5dv33erXblZP7D6VJNeIb6SDLk3991OodBgflNXbgUMIuOYLWdqT6I18YNnclwsK239lzuBK/d77LezaZn8BodqeL1i8kJw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975412805576.822225640653; Fri, 28 Oct 2022 09:43:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSPO-00050g-6m; Fri, 28 Oct 2022 12:40:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPB-0003kB-89; Fri, 28 Oct 2022 12:40:29 -0400 Received: from mail-oi1-x22d.google.com ([2607:f8b0:4864:20::22d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSP7-0007lr-QZ; Fri, 28 Oct 2022 12:40:24 -0400 Received: by mail-oi1-x22d.google.com with SMTP id r187so6681336oia.8; Fri, 28 Oct 2022 09:40:20 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lMbH8BdSoM5L6/MCFulS4esl/l8+JuB7NAjtoPNa4iU=; b=PHnrGxvOsTLzNYY8y3VVeL50gqeiEWftp+YRYnuj9PJRtyXYska/T95yXRgqq6bEmH iJg1vqYiwPahcqjSjJg8kLkLmvRjalZdFq+YT5Ox93gZJNk9nY2/7GlPKesM1v2w1B4G 5NNKnpOnC2GPmyin7GwZnNAuI04d079GVPCz8WKSsq728Om3DcjBKNpMMvKoZ26aFEJ/ dAgcCLA4Ns3egWyw0nQjImFGbao0tTOQFYnc3DS/DKdT7oC/10KTes6K/fk5r01ArlBQ H64uDl5bCgUcE7JmiDLdODQ0SzrkKJxbTnfS5aocrmqBwU22NV5JbW48sKGwM/3DfSbg v/PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lMbH8BdSoM5L6/MCFulS4esl/l8+JuB7NAjtoPNa4iU=; b=q3LdiDVUoiIxMMdJmJYBvWRZE4m6TydGTX90bjOHT8lI0SjAwsr+0DcEiPcuD8ngLQ 6AhIPg9mohHTRVu7bQB8zIDASA4WYumnKB9mMXeD4551ps3SpbU+hRf7tp1kX5lWFAAX uPYCwAvfSz4uOLJmVlb/+fP4xU37Sq8BBKRgYzcfrenkJAW0mS2suTL0T6KnLglK1wVW qn6A56I/7/N94T1dwY1D1LMrfRG8bPvXdP8RWQNVkH2YRr6h5mk4qiYq3U1auAXksnTU IfNSk28xO+frmkMAHfcWI8rRMdVJnd5vDop8ugm1hrFcT4Tj/n/3ZpU/cb481vE5nDTU vtYg== X-Gm-Message-State: ACrzQf0pA6SpO7+IvQscqubl2O3a6cA8Q4X7F802t1T5B1K9nlzqdsJQ LotcGg+N0tj1L/xxpcbb6NnZsVoY5eOkNg== X-Google-Smtp-Source: AMsMyM5wLxAuCfH/baWQFyUFrzuMK9ZTh/4sLhKrKPjUTKyDL+oNnD3plhFkgwm0eQa6u4tykyJrZw== X-Received: by 2002:a05:6808:140a:b0:355:230f:b7f1 with SMTP id w10-20020a056808140a00b00355230fb7f1mr8637183oiv.8.1666975218907; Fri, 28 Oct 2022 09:40:18 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Daniel Henrique Barboza Subject: [PULL 04/62] target/ppc: move msgclr/msgsnd to decodetree Date: Fri, 28 Oct 2022 13:38:53 -0300 Message-Id: <20221028163951.810456-5-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22d; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975413533100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Signed-off-by: Matheus Ferst Reviewed-by: Daniel Henrique Barboza Message-Id: <20221006200654.725390-5-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/insn32.decode | 5 ++ target/ppc/translate.c | 34 +-------- .../ppc/translate/processor-ctrl-impl.c.inc | 70 +++++++++++++++++++ 3 files changed, 77 insertions(+), 32 deletions(-) create mode 100644 target/ppc/translate/processor-ctrl-impl.c.inc diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index a5249ee32c..bba49ded1b 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -908,3 +908,8 @@ SLBSYNC 011111 ----- ----- ----- 0101010010 - =20 TLBIE 011111 ..... - .. . . ..... 0100110010 - @X_tlb= ie TLBIEL 011111 ..... - .. . . ..... 0100010010 - @X_tlb= ie + +# Processor Control Instructions + +MSGCLR 011111 ----- ----- ..... 0011101110 - @X_rb +MSGSND 011111 ----- ----- ..... 0011001110 - @X_rb diff --git a/target/ppc/translate.c b/target/ppc/translate.c index f73ff2d2ee..231bc9551e 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -6241,34 +6241,6 @@ static void gen_icbt_440(DisasContext *ctx) =20 /* Embedded.Processor Control */ =20 -static void gen_msgclr(DisasContext *ctx) -{ -#if defined(CONFIG_USER_ONLY) - GEN_PRIV(ctx); -#else - CHK_HV(ctx); - if (is_book3s_arch2x(ctx)) { - gen_helper_book3s_msgclr(cpu_env, cpu_gpr[rB(ctx->opcode)]); - } else { - gen_helper_msgclr(cpu_env, cpu_gpr[rB(ctx->opcode)]); - } -#endif /* defined(CONFIG_USER_ONLY) */ -} - -static void gen_msgsnd(DisasContext *ctx) -{ -#if defined(CONFIG_USER_ONLY) - GEN_PRIV(ctx); -#else - CHK_HV(ctx); - if (is_book3s_arch2x(ctx)) { - gen_helper_book3s_msgsnd(cpu_gpr[rB(ctx->opcode)]); - } else { - gen_helper_msgsnd(cpu_gpr[rB(ctx->opcode)]); - } -#endif /* defined(CONFIG_USER_ONLY) */ -} - #if defined(TARGET_PPC64) static void gen_msgclrp(DisasContext *ctx) { @@ -6628,6 +6600,8 @@ static bool resolve_PLS_D(DisasContext *ctx, arg_D *d= , arg_PLS_D *a) =20 #include "translate/branch-impl.c.inc" =20 +#include "translate/processor-ctrl-impl.c.inc" + #include "translate/storage-ctrl-impl.c.inc" =20 /* Handles lfdp */ @@ -6901,10 +6875,6 @@ GEN_HANDLER2_E(tlbivax_booke206, "tlbivax", 0x1F, 0x= 12, 0x18, 0x00000001, PPC_NONE, PPC2_BOOKE206), GEN_HANDLER2_E(tlbilx_booke206, "tlbilx", 0x1F, 0x12, 0x00, 0x03800001, PPC_NONE, PPC2_BOOKE206), -GEN_HANDLER2_E(msgsnd, "msgsnd", 0x1F, 0x0E, 0x06, 0x03ff0001, - PPC_NONE, (PPC2_PRCNTL | PPC2_ISA207S)), -GEN_HANDLER2_E(msgclr, "msgclr", 0x1F, 0x0E, 0x07, 0x03ff0001, - PPC_NONE, (PPC2_PRCNTL | PPC2_ISA207S)), GEN_HANDLER2_E(msgsync, "msgsync", 0x1F, 0x16, 0x1B, 0x00000000, PPC_NONE, PPC2_ISA300), GEN_HANDLER(wrtee, 0x1F, 0x03, 0x04, 0x000FFC01, PPC_WRTEE), diff --git a/target/ppc/translate/processor-ctrl-impl.c.inc b/target/ppc/tr= anslate/processor-ctrl-impl.c.inc new file mode 100644 index 0000000000..208f2c2391 --- /dev/null +++ b/target/ppc/translate/processor-ctrl-impl.c.inc @@ -0,0 +1,70 @@ +/* + * Power ISA decode for Storage Control instructions + * + * Copyright (c) 2022 Instituto de Pesquisas Eldorado (eldorado.org.br) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +/* + * Processor Control Instructions + */ + +static bool trans_MSGCLR(DisasContext *ctx, arg_X_rb *a) +{ + if (!(ctx->insns_flags2 & PPC2_ISA207S)) { + /* + * Before Power ISA 2.07, processor control instructions were only + * implemented in the "Embedded.Processor Control" category. + */ + REQUIRE_INSNS_FLAGS2(ctx, PRCNTL); + } + + REQUIRE_HV(ctx); + +#if !defined(CONFIG_USER_ONLY) + if (is_book3s_arch2x(ctx)) { + gen_helper_book3s_msgclr(cpu_env, cpu_gpr[a->rb]); + } else { + gen_helper_msgclr(cpu_env, cpu_gpr[a->rb]); + } +#else + qemu_build_not_reached(); +#endif + return true; +} + +static bool trans_MSGSND(DisasContext *ctx, arg_X_rb *a) +{ + if (!(ctx->insns_flags2 & PPC2_ISA207S)) { + /* + * Before Power ISA 2.07, processor control instructions were only + * implemented in the "Embedded.Processor Control" category. + */ + REQUIRE_INSNS_FLAGS2(ctx, PRCNTL); + } + + REQUIRE_HV(ctx); + +#if !defined(CONFIG_USER_ONLY) + if (is_book3s_arch2x(ctx)) { + gen_helper_book3s_msgsnd(cpu_gpr[a->rb]); + } else { + gen_helper_msgsnd(cpu_gpr[a->rb]); + } +#else + qemu_build_not_reached(); +#endif + return true; +} --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975344; cv=none; d=zohomail.com; s=zohoarc; b=R2Z5MWylKFlFdOdPdquN6XW9k8pkyxppK8AsEgTFFJs8UTOIZU/WZcloqV6Q8pahfr5v8+4r8hl21ZV0MzBnTp8s6CS0pJ5flyBmCBPouW8rThMJwhbnc2so2RkJQeOaP57F6ZGdQCC9VD2eXtCunZ5X0Y33v67UoOD4y1OSkD8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975344; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Bsy8BU3/DSIqWvxk//Ob8TXQFsLrkgw1RJYkrJFuC9c=; b=WyWpshsn2tQ7Sp4iOlzwYTJBOmyD118XlCxy1F2ipxRM9+w1ynXpUZdr6ko/f2bC9iWKdCxwrlmFrUGDdP/6CfzFIOVfLqrzt2DKrjxGzQPQN/+iwaOh5Aw2Yya7aiLqlBuE0sjPtmDGaqGSfFZ8DEYBqAnpQ1q86W4UsKTA2PI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975344442759.675465954018; Fri, 28 Oct 2022 09:42:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSPP-0005Gz-DM; Fri, 28 Oct 2022 12:40:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPC-0003t4-Jq; Fri, 28 Oct 2022 12:40:29 -0400 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSP9-0007mk-WB; Fri, 28 Oct 2022 12:40:25 -0400 Received: by mail-oi1-x22f.google.com with SMTP id t10so6703168oib.5; Fri, 28 Oct 2022 09:40:23 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Bsy8BU3/DSIqWvxk//Ob8TXQFsLrkgw1RJYkrJFuC9c=; b=foi0ubOxsGKCtsTXnjqPLH7C0N8W5f4JPW9GOb84/19BCOlb+yuQzHJsnFgsdSQZGc V9nXTqgCV7aU65cr1rUOjYHyKUKczMfn6pNbn1aF4dfKgrad+jT10eFI/jA6sYjkyWKV ZIz8S7JnjV2csAa3GUpb+jMju3eMuCbu6qH/DTdNdl6qr6C7f1DLDcKBIxxGiFxICpps 4q9+u1W4hO9SCxHMKMRs2G9ac1SrMxF+2uM/TjSgcStzVQBPTeKN2aW2hbxZovJ7KqGI RFAY4tjoZMrhiwj1eQXPpE5Vcjh0XAHfmDmWRZvXCd85JfeeS9I7Sb8fSla3hWvVq3Gy OF7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Bsy8BU3/DSIqWvxk//Ob8TXQFsLrkgw1RJYkrJFuC9c=; b=0Kmbv+1i6+8vFNBhQI+lGhDLSoVdyzCs9zNNZZYkTGjunXssfWcXQmfVNtZo7hngHF 1SBSN+gyrwz+tIdhG9HKAmI68kgdgxb1qC0LerLDIdWfgObYH3NnloPuaG9QUvEafs3+ ay3kcbqYoSA0451V9rF+Mjfm6sToci9TTRaLQtfKcu/VUnN/yPiCl47qHXmc06gbrecT LpAmt5IvF/uJ6ynAmYH1TRKcEsC7XhrgdNP+7tiCncJN2WGY1QQHSmSIgNIU9+U567hj JcC54py4RX9Ur0p4lIpiS55qjYifNXi+kgKgkm4+JcXwn9joO6oJENY2UN3IWlHHwcOy PtYw== X-Gm-Message-State: ACrzQf2VEfP4V1Ys0OvYYYhK9wuPl53VecVV+KFYTf3vTBvBOYdyEJjB rTeiIL238UeumteV07+O5wJQokpdiiVafA== X-Google-Smtp-Source: AMsMyM4+12MBVHxwCV3iu/3oW+EXqjiFY+U2qbky0TcLuQKv2Z77f41MnWNGroYVLOxQO1uX4R8kig== X-Received: by 2002:a05:6808:2116:b0:359:dc32:4f6e with SMTP id r22-20020a056808211600b00359dc324f6emr1051145oiw.86.1666975222140; Fri, 28 Oct 2022 09:40:22 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Daniel Henrique Barboza Subject: [PULL 05/62] target/ppc: move msgclrp/msgsndp to decodetree Date: Fri, 28 Oct 2022 13:38:54 -0300 Message-Id: <20221028163951.810456-6-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22f; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975345098100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Signed-off-by: Matheus Ferst Reviewed-by: Daniel Henrique Barboza Message-Id: <20221006200654.725390-6-matheus.ferst@eldorado.org.br> [danielhb: ppc32 build fix in trans_(MSGCLRP|MSGSNDP)] Signed-off-by: Daniel Henrique Barboza --- target/ppc/insn32.decode | 2 ++ target/ppc/translate.c | 26 ------------------- .../ppc/translate/processor-ctrl-impl.c.inc | 26 +++++++++++++++++++ 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index bba49ded1b..5ba4a6807d 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -913,3 +913,5 @@ TLBIEL 011111 ..... - .. . . ..... 0100010010 = - @X_tlbie =20 MSGCLR 011111 ----- ----- ..... 0011101110 - @X_rb MSGSND 011111 ----- ----- ..... 0011001110 - @X_rb +MSGCLRP 011111 ----- ----- ..... 0010101110 - @X_rb +MSGSNDP 011111 ----- ----- ..... 0010001110 - @X_rb diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 231bc9551e..9e200cec24 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -6241,28 +6241,6 @@ static void gen_icbt_440(DisasContext *ctx) =20 /* Embedded.Processor Control */ =20 -#if defined(TARGET_PPC64) -static void gen_msgclrp(DisasContext *ctx) -{ -#if defined(CONFIG_USER_ONLY) - GEN_PRIV(ctx); -#else - CHK_SV(ctx); - gen_helper_book3s_msgclrp(cpu_env, cpu_gpr[rB(ctx->opcode)]); -#endif /* defined(CONFIG_USER_ONLY) */ -} - -static void gen_msgsndp(DisasContext *ctx) -{ -#if defined(CONFIG_USER_ONLY) - GEN_PRIV(ctx); -#else - CHK_SV(ctx); - gen_helper_book3s_msgsndp(cpu_env, cpu_gpr[rB(ctx->opcode)]); -#endif /* defined(CONFIG_USER_ONLY) */ -} -#endif - static void gen_msgsync(DisasContext *ctx) { #if defined(CONFIG_USER_ONLY) @@ -6896,10 +6874,6 @@ GEN_HANDLER(vmladduhm, 0x04, 0x11, 0xFF, 0x00000000,= PPC_ALTIVEC), GEN_HANDLER_E(maddhd_maddhdu, 0x04, 0x18, 0xFF, 0x00000000, PPC_NONE, PPC2_ISA300), GEN_HANDLER_E(maddld, 0x04, 0x19, 0xFF, 0x00000000, PPC_NONE, PPC2_ISA300), -GEN_HANDLER2_E(msgsndp, "msgsndp", 0x1F, 0x0E, 0x04, 0x03ff0001, - PPC_NONE, PPC2_ISA207S), -GEN_HANDLER2_E(msgclrp, "msgclrp", 0x1F, 0x0E, 0x05, 0x03ff0001, - PPC_NONE, PPC2_ISA207S), #endif =20 #undef GEN_INT_ARITH_ADD diff --git a/target/ppc/translate/processor-ctrl-impl.c.inc b/target/ppc/tr= anslate/processor-ctrl-impl.c.inc index 208f2c2391..d704a322a8 100644 --- a/target/ppc/translate/processor-ctrl-impl.c.inc +++ b/target/ppc/translate/processor-ctrl-impl.c.inc @@ -68,3 +68,29 @@ static bool trans_MSGSND(DisasContext *ctx, arg_X_rb *a) #endif return true; } + +static bool trans_MSGCLRP(DisasContext *ctx, arg_X_rb *a) +{ + REQUIRE_64BIT(ctx); + REQUIRE_INSNS_FLAGS2(ctx, ISA207S); + REQUIRE_SV(ctx); +#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64) + gen_helper_book3s_msgclrp(cpu_env, cpu_gpr[a->rb]); +#else + qemu_build_not_reached(); +#endif + return true; +} + +static bool trans_MSGSNDP(DisasContext *ctx, arg_X_rb *a) +{ + REQUIRE_64BIT(ctx); + REQUIRE_INSNS_FLAGS2(ctx, ISA207S); + REQUIRE_SV(ctx); +#if !defined(CONFIG_USER_ONLY) && defined(TARGET_PPC64) + gen_helper_book3s_msgsndp(cpu_env, cpu_gpr[a->rb]); +#else + qemu_build_not_reached(); +#endif + return true; +} --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975292; cv=none; d=zohomail.com; s=zohoarc; b=mwZcUUxXZ8kOV92Aob/2g3NQI2ZHW5cjlNeULCnZvtmwxmOvrUS9Je8dAQA/kp54/Pos21Rvrd+japx56bDCbSbjp1zCYboE616p+HO8gONqmZMVgJD7efuCJyIwt/ewvruUYAzzAo2yk+TO7IwfOrKAWuRKU5QGb0LkWSuSfic= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975292; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iCqxwsrAar7xf5I5K+RvMRREycTzDCaocpqm0tXs1lM=; b=KyhZNNU8qCZev1ts/byeYCSEDIkZaY6sFSwz50N8LcxLZxHa05dJJLEgSOUZaUcPIwsVlqrAh+zHtB/xFWLTvLDTioY3s36IcJqIyA2G0ixYWrUDNDlJXW2l7+4SpxEB82XN4EO6gIR2nM/lLVvX9n4up8debOGhYwG3GxJ20YM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975292280624.8403980174327; Fri, 28 Oct 2022 09:41:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSPX-0005wY-FG; Fri, 28 Oct 2022 12:40:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPI-0004QK-2E; Fri, 28 Oct 2022 12:40:32 -0400 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPG-0007oU-I1; Fri, 28 Oct 2022 12:40:31 -0400 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-13c569e5ff5so6491201fac.6; Fri, 28 Oct 2022 09:40:28 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iCqxwsrAar7xf5I5K+RvMRREycTzDCaocpqm0tXs1lM=; b=Qm23aiYTHD04AjsgrMFBUUU1O19tfhlwPVLYHWdz7e/Tm2ccJvgN08tj0w3mBclLE/ 5dPeZSKaqWjqji03AHuCDQou0zXBgEgnNWbDCm6BhW1qn45f+Ml9lGghMaHPbBuI9HRU kTzrgNJq9EvB1srGJacSX19aRaEbGzz0Hbsc56VFdLKy5D0itat+3fv4k2yDuY4uJjbc Hs/5NN1nIQ5QclHJypM+onPm9m/9foKxwtVaJxVNeLw8cSiQw+fX1RIPGjBm7q32eTmX KgoheFVAjvkf9DuwVkfY84KcDO2tIGOoRazpFNTF1NOFnUt4tQhGTjfWrPbyA/who0l3 yJeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iCqxwsrAar7xf5I5K+RvMRREycTzDCaocpqm0tXs1lM=; b=LMpQIOOcM1wAf/I/AnzSLg7XiFqXyQ4XRuVTgGdOOw1XuXM9mv5MyWG4Jn8BM+z/Z5 OXIFI1evP0dw1ohQ7+mfBJE1h0Y/L2YPK+7hcZ4Bmd8+4mu109DCxjTiqOYVWU+qsi9o o3pbzVcUYHnilxa+XNZsc2nPQu1VkH3C72Y4bQ9/kkhunQnaVqI+c8u5LPjvUwdhNKgJ VIx+GKSMJwzt17EivRiw6Gzpjp8fNT/FcOGmgMvdQ2ojrVFLoemlvO8Em4YGEWB6EjT0 qjzux296AKF/oM6zIzlP7Cg9H/CxS2+89fgL8H53wc624gWYW5IVKHmrBEtXXE/zpIX+ S/4A== X-Gm-Message-State: ACrzQf1lzuW3Qzddp2xlBzk8N+wfQnUiwDFibLqnfYwHFPYVLndAjm2x v8pCGpvMqGKOHjxhkCB4MDvH6DSa8FIDMQ== X-Google-Smtp-Source: AMsMyM43X01GaeV2Xhrvq92ekFtvpB5InvNxwCjIBoSytgAmJ6LdApDIZ5DJpPpmv3S+Knrx1h1oDQ== X-Received: by 2002:a05:6870:fb86:b0:13a:dffa:e4ae with SMTP id kv6-20020a056870fb8600b0013adffae4aemr9846835oab.245.1666975227142; Fri, 28 Oct 2022 09:40:27 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Daniel Henrique Barboza Subject: [PULL 06/62] target/ppc: move msgsync to decodetree Date: Fri, 28 Oct 2022 13:38:55 -0300 Message-Id: <20221028163951.810456-7-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::32; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x32.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975292796100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Signed-off-by: Matheus Ferst Reviewed-by: Daniel Henrique Barboza Message-Id: <20221006200654.725390-7-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/insn32.decode | 1 + target/ppc/translate.c | 14 -------------- target/ppc/translate/processor-ctrl-impl.c.inc | 9 +++++++++ 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 5ba4a6807d..70a3b4de5e 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -915,3 +915,4 @@ MSGCLR 011111 ----- ----- ..... 0011101110 - = @X_rb MSGSND 011111 ----- ----- ..... 0011001110 - @X_rb MSGCLRP 011111 ----- ----- ..... 0010101110 - @X_rb MSGSNDP 011111 ----- ----- ..... 0010001110 - @X_rb +MSGSYNC 011111 ----- ----- ----- 1101110110 - diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 9e200cec24..959e7e3475 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -6239,18 +6239,6 @@ static void gen_icbt_440(DisasContext *ctx) */ } =20 -/* Embedded.Processor Control */ - -static void gen_msgsync(DisasContext *ctx) -{ -#if defined(CONFIG_USER_ONLY) - GEN_PRIV(ctx); -#else - CHK_HV(ctx); -#endif /* defined(CONFIG_USER_ONLY) */ - /* interpreted as no-op */ -} - #if defined(TARGET_PPC64) static void gen_maddld(DisasContext *ctx) { @@ -6853,8 +6841,6 @@ GEN_HANDLER2_E(tlbivax_booke206, "tlbivax", 0x1F, 0x1= 2, 0x18, 0x00000001, PPC_NONE, PPC2_BOOKE206), GEN_HANDLER2_E(tlbilx_booke206, "tlbilx", 0x1F, 0x12, 0x00, 0x03800001, PPC_NONE, PPC2_BOOKE206), -GEN_HANDLER2_E(msgsync, "msgsync", 0x1F, 0x16, 0x1B, 0x00000000, - PPC_NONE, PPC2_ISA300), GEN_HANDLER(wrtee, 0x1F, 0x03, 0x04, 0x000FFC01, PPC_WRTEE), GEN_HANDLER(wrteei, 0x1F, 0x03, 0x05, 0x000E7C01, PPC_WRTEE), GEN_HANDLER(dlmzb, 0x1F, 0x0E, 0x02, 0x00000000, PPC_440_SPEC), diff --git a/target/ppc/translate/processor-ctrl-impl.c.inc b/target/ppc/tr= anslate/processor-ctrl-impl.c.inc index d704a322a8..cc7a50d579 100644 --- a/target/ppc/translate/processor-ctrl-impl.c.inc +++ b/target/ppc/translate/processor-ctrl-impl.c.inc @@ -94,3 +94,12 @@ static bool trans_MSGSNDP(DisasContext *ctx, arg_X_rb *a) #endif return true; } + +static bool trans_MSGSYNC(DisasContext *ctx, arg_MSGSYNC *a) +{ + REQUIRE_INSNS_FLAGS2(ctx, ISA300); + REQUIRE_HV(ctx); + + /* interpreted as no-op */ + return true; +} --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975328; cv=none; d=zohomail.com; s=zohoarc; b=MqDgz6E0tG84A8546bZsL/LfS2VYIGA17scqOfdqehCfov650fEr2PCtjp+TZhbPjikaUJu8PIYUgpuEJlF/wbVtJdm39YANIo+SCY/WXct/I1oDvVaimCaWy0fLklZDG7eLhbc+2khl4h0z5VBoX7C3VV/IOY/ffrz7CozUoUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975328; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=bSVbVqUMoWrvzA/qTO3qCVq0+/JX/NUAzKxWg8pgStg=; b=RjQbWuMZeWu7dWXsm8OI/tVi9qq+0gQUAJHnWpElb8exPZJ/d9cKPFdPrV8heHy8Xn5MbJ4rHSnnTXgZy8sOwjYGaeQ/yMW/0nV+sf9Xf8VK6dTPlP0H30QaWc0FCVbxn+iSlSh+wlS2R29IHeqTG6K/zwyRnfNsx4/0C2zbzoM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975328324987.2343568296169; Fri, 28 Oct 2022 09:42:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQJ-00034c-Jn; Fri, 28 Oct 2022 12:41:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPL-0004qM-KK; Fri, 28 Oct 2022 12:40:35 -0400 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPI-0007rE-Om; Fri, 28 Oct 2022 12:40:35 -0400 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-13b103a3e5dso6882824fac.2; Fri, 28 Oct 2022 09:40:31 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bSVbVqUMoWrvzA/qTO3qCVq0+/JX/NUAzKxWg8pgStg=; b=hHVnd5YWjwYdViovze6elUw9bgyhvRPS7zdAX6Dj/jG1ZxZ7gIbb2KRVf7AiYL9k9h 7jo3nxC/IGCY91yclFE/9YqO/5kgFbNqcS17dex66rd6d4iTwRx0qq+/DJNAPvTPdNjo js/G5CbfBghCsyHvx83WtgiZH9L1B7lRYnMFTpTXylLtLvCky/NVshl9HeDqDPlNDFlk LpEHdJJ/Ymgxiur64dNxjZFeDYpiAi/3UEXeH2jYeRALgrhZPjvloCQJHUiA+O6D4j1V zoN69oLEQm7JQLK9+TfwnBPSgOsV1lOD4pUthqff17t8cF/CmnbsEvdpS62vzjQttKN7 EJWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bSVbVqUMoWrvzA/qTO3qCVq0+/JX/NUAzKxWg8pgStg=; b=SkE7gbYNwC/uFtycUsOZtgz/xdgOX+l2TXVeQLRV/sDwsgDmzOrRZPvA4kR0IDlsIu tB9cZ1JpwQKyKrGjBkL5x/c/LAofHhv/uq63hoiYiihD+P4iBbqQN4lzWK7LXYf5efxb MLMjT+oQhigIdpMgXwnpRuIefLtjiZxXsPMP20YEdzemie1YDDe3jKAg3dye2l4+r6HY xYZJVAihX9e1lLeQo6DvAWkslesxG+ibSILS3jPGreQRuEyi+U1A0klSPIa2pqK/Ef4p LnCxrGe3tBRh6oKII4UFzXcGogfo+rYKIANbq96FqWzBDQNc1LwjzBvyXcMXO89I6v3q zSYA== X-Gm-Message-State: ACrzQf3gP7rUKDUx4nFetaPUxa+W/VNPtYjT3pRbRQmLJSde6S9pkiTa FEBXjKnWM8jSURMbMm0ARdPrY4ni8+ishA== X-Google-Smtp-Source: AMsMyM4HzQ14TUxoJ4OTHpwp/VyDLrBsYtE1HA6ux72t+OU7nOXBhBUs2+ZrbShGyMCzlU6kLpobpw== X-Received: by 2002:a05:6870:4195:b0:13c:8f93:8517 with SMTP id y21-20020a056870419500b0013c8f938517mr7175oac.147.1666975231072; Fri, 28 Oct 2022 09:40:31 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 07/62] target/ppc: Moved VMLADDUHM to decodetree and use gvec Date: Fri, 28 Oct 2022 13:38:56 -0300 Message-Id: <20221028163951.810456-8-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::32; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x32.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975328930100004 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" This patch moves VMLADDUHM to decodetree a creates a gvec implementation using mul_vec and add_vec. rept loop master patch 8 12500 0,01810500 0,00903100 (-50.1%) 25 4000 0,01739400 0,00747700 (-57.0%) 100 1000 0,01843600 0,00901400 (-51.1%) 500 200 0,02574600 0,01971000 (-23.4%) 2500 40 0,05921600 0,07121800 (+20.3%) 8000 12 0,15326700 0,21725200 (+41.7%) The significant difference in performance when REPT is low and LOOP is high I think is due to the fact that the new implementation has a higher translation time, as when using a helper only 5 TCGop are used but with the patch a total of 10 TCGop are needed (Power lacks a direct mul_vec equivalent so this instruction is implemented with the help of 5 others, vmuleu, vmulou, vmrgh, vmrgl and vpkum). Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-2-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/helper.h | 2 +- target/ppc/insn32.decode | 2 ++ target/ppc/int_helper.c | 3 +- target/ppc/translate.c | 1 - target/ppc/translate/vmx-impl.c.inc | 48 ++++++++++++++++++----------- 5 files changed, 35 insertions(+), 21 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 57eee07256..9c562ab00e 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -264,7 +264,7 @@ DEF_HELPER_FLAGS_4(VMSUMUHM, TCG_CALL_NO_RWG, void, avr= , avr, avr, avr) DEF_HELPER_5(VMSUMUHS, void, env, avr, avr, avr, avr) DEF_HELPER_FLAGS_4(VMSUMSHM, TCG_CALL_NO_RWG, void, avr, avr, avr, avr) DEF_HELPER_5(VMSUMSHS, void, env, avr, avr, avr, avr) -DEF_HELPER_FLAGS_4(vmladduhm, TCG_CALL_NO_RWG, void, avr, avr, avr, avr) +DEF_HELPER_FLAGS_5(VMLADDUHM, TCG_CALL_NO_RWG, void, avr, avr, avr, avr, i= 32) DEF_HELPER_FLAGS_2(mtvscr, TCG_CALL_NO_RWG, void, env, i32) DEF_HELPER_FLAGS_1(mfvscr, TCG_CALL_NO_RWG, i32, env) DEF_HELPER_3(lvebx, void, env, avr, tl) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 70a3b4de5e..9ba1689230 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -693,6 +693,8 @@ VMSUMUHS 000100 ..... ..... ..... ..... 100111 = @VA VMSUMCUD 000100 ..... ..... ..... ..... 010111 @VA VMSUMUDM 000100 ..... ..... ..... ..... 100011 @VA =20 +VMLADDUHM 000100 ..... ..... ..... ..... 100010 @VA + ## Vector String Instructions =20 VSTRIBL 000100 ..... 00000 ..... . 0000001101 @VX_tb_rc diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index 696096100b..0d25000b2a 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -974,7 +974,8 @@ void helper_vmhraddshs(CPUPPCState *env, ppc_avr_t *r, = ppc_avr_t *a, } } =20 -void helper_vmladduhm(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t = *c) +void helper_VMLADDUHM(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t = *c, + uint32_t v) { int i; =20 diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 959e7e3475..58fbc15954 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -6855,7 +6855,6 @@ GEN_HANDLER(lvsl, 0x1f, 0x06, 0x00, 0x00000001, PPC_A= LTIVEC), GEN_HANDLER(lvsr, 0x1f, 0x06, 0x01, 0x00000001, PPC_ALTIVEC), GEN_HANDLER(mfvscr, 0x04, 0x2, 0x18, 0x001ff800, PPC_ALTIVEC), GEN_HANDLER(mtvscr, 0x04, 0x2, 0x19, 0x03ff0000, PPC_ALTIVEC), -GEN_HANDLER(vmladduhm, 0x04, 0x11, 0xFF, 0x00000000, PPC_ALTIVEC), #if defined(TARGET_PPC64) GEN_HANDLER_E(maddhd_maddhdu, 0x04, 0x18, 0xFF, 0x00000000, PPC_NONE, PPC2_ISA300), diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx= -impl.c.inc index e644ad3236..9f18c6d4f2 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -2523,24 +2523,6 @@ static void glue(gen_, name0##_##name1)(DisasContext= *ctx) \ =20 GEN_VAFORM_PAIRED(vmhaddshs, vmhraddshs, 16) =20 -static void gen_vmladduhm(DisasContext *ctx) -{ - TCGv_ptr ra, rb, rc, rd; - if (unlikely(!ctx->altivec_enabled)) { - gen_exception(ctx, POWERPC_EXCP_VPU); - return; - } - ra =3D gen_avr_ptr(rA(ctx->opcode)); - rb =3D gen_avr_ptr(rB(ctx->opcode)); - rc =3D gen_avr_ptr(rC(ctx->opcode)); - rd =3D gen_avr_ptr(rD(ctx->opcode)); - gen_helper_vmladduhm(rd, ra, rb, rc); - tcg_temp_free_ptr(ra); - tcg_temp_free_ptr(rb); - tcg_temp_free_ptr(rc); - tcg_temp_free_ptr(rd); -} - static bool do_va_helper(DisasContext *ctx, arg_VA *a, void (*gen_helper)(TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_ptr)) { @@ -2569,6 +2551,36 @@ TRANS_FLAGS2(ALTIVEC_207, VSUBECUQ, do_va_helper, ge= n_helper_VSUBECUQ) TRANS_FLAGS(ALTIVEC, VPERM, do_va_helper, gen_helper_VPERM) TRANS_FLAGS2(ISA300, VPERMR, do_va_helper, gen_helper_VPERMR) =20 +static void gen_vmladduhm_vec(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_= vec b, + TCGv_vec c) +{ + tcg_gen_mul_vec(vece, t, a, b); + tcg_gen_add_vec(vece, t, t, c); +} + +static bool trans_VMLADDUHM(DisasContext *ctx, arg_VA *a) +{ + static const TCGOpcode vecop_list[] =3D { + INDEX_op_add_vec, INDEX_op_mul_vec, 0 + }; + + static const GVecGen4 op =3D { + .fno =3D gen_helper_VMLADDUHM, + .fniv =3D gen_vmladduhm_vec, + .opt_opc =3D vecop_list, + .vece =3D MO_16 + }; + + REQUIRE_INSNS_FLAGS(ctx, ALTIVEC); + REQUIRE_VECTOR(ctx); + + tcg_gen_gvec_4(avr_full_offset(a->vrt), avr_full_offset(a->vra), + avr_full_offset(a->vrb), avr_full_offset(a->rc), + 16, 16, &op); + + return true; +} + static bool trans_VSEL(DisasContext *ctx, arg_VA *a) { REQUIRE_INSNS_FLAGS(ctx, ALTIVEC); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975668; cv=none; d=zohomail.com; s=zohoarc; b=CGKAql71t3U00rh2CDEF1ATlNBzrzU+j+mFCZLp9wSNCVofFYoeLSXDSSbfds/8h7d5wTa9/nOfLf8MbAyXIbytqMS+aa6twr1u2V/nPDDq80MPGHW2/r+cQelohpUY2jsSBXvsDrO395tJL/vT57YBdWv21D4tLkO3xNNiRoEM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975668; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iAJDHjENxE6N3mVj5DAcHwL5kqmsr6E5lHGXotCNVMk=; b=kK5MTwdLfiH2Jm7sOAX+VpHOcHYibA9XkvfGACyjoQj3lHH4/un41SgtGiw7h3R9jJiiHOqSxe/pw/wk3UMovW6zh1UOGKIm8Vh5rDl2LyaDuvwzaRfqupQBXZJLLlY8yoyp2K9K9Kj2o1k0bpJeOqr/Zu3S+MbyqzmOnK+XT+o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975668068911.8531533894106; Fri, 28 Oct 2022 09:47:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQM-0003Hg-Ty; Fri, 28 Oct 2022 12:41:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPP-0005IG-Iu; Fri, 28 Oct 2022 12:40:39 -0400 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPN-0007wS-Sl; Fri, 28 Oct 2022 12:40:39 -0400 Received: by mail-ot1-x335.google.com with SMTP id w26-20020a056830061a00b0066c320f5b49so949489oti.5; Fri, 28 Oct 2022 09:40:36 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iAJDHjENxE6N3mVj5DAcHwL5kqmsr6E5lHGXotCNVMk=; b=l9+kivMVacgwPZim+iIyA3MSEs/9zOPYgJXP2J3H7XjD9G7ZZrhDOvLlbSV48kW4ix bQGSDFEpTYKfDMxz85XqvOM+BSdoa2nIqBC7GOE8Cyzuiev5CdE34IoSN2EQc4alYSUi Em8KRxMqny3tFCFAeyqy2TKlBFyLS/8czm0kZlsTXhY2fYGMWxTiXx6vgTEJTKmUkFcS Aoj6ZcfLzP/6V9vAFSbzYkpWOo589V6orKe1IOfzzC53shq45crqllMwaoi4ACRS26pD ojXqXhSPKs9iWV6cY7bzxPgqSEOfIz4EcQfw6ef6W0PgKrjWAYvEOGr58lTWEx2CnTU4 mqKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iAJDHjENxE6N3mVj5DAcHwL5kqmsr6E5lHGXotCNVMk=; b=pyp+7+wCSpe0dhELvidc/ZrfS6eSbszz7GGj1txbSuIaM4LGfmIXXHa6csSu3GahL5 pJE0atUBbcxUFFvHDNcUT/fGfRc6jW1+T9ft+SMMT747+eFsz/eTMSRZuRPWGzB42lzA Mcs4BGO2GvbVbyfRoOx4/3YsdE2DIP6v4WUcAOCi7n2KG0zLuDWQb/6giNDuyi8lhS14 XqH1pJJIzvXqSugKKGH8iIaEVj/leeomrpGFo+HCroVeeCpDRt1UMpb2p8sEuR+SmLkc qnDiDnPkDdYRZDnJ6fEMTTRJxrGdDRrZgk0S3pn6vWDFk8007r3MO6VoR6FMR2uUzB7+ Bv+A== X-Gm-Message-State: ACrzQf0E1hEsYClO4AvOSUENoT/4+/0doQCnswfoP+GjGWHb4JSlDydy 1GLmyRB03yL4NK++TJ5AFmn6I1wO4X5vlQ== X-Google-Smtp-Source: AMsMyM7WqcYnV7Ew/CQtRW1f8VMzzKr7SWgy8vbMdzExER9S3P62IJ7DMkKChNj99o56lH81Ryy2JA== X-Received: by 2002:a05:6830:438a:b0:661:d4ae:9dd6 with SMTP id s10-20020a056830438a00b00661d4ae9dd6mr122359otv.26.1666975235426; Fri, 28 Oct 2022 09:40:35 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 08/62] target/ppc: Move VMH[R]ADDSHS instruction to decodetree Date: Fri, 28 Oct 2022 13:38:57 -0300 Message-Id: <20221028163951.810456-9-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::335; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x335.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975668821100001 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" This patch moves VMHADDSHS and VMHRADDSHS to decodetree I couldn't find a satisfactory implementation with TCG inline. vmhaddshs: rept loop master patch 8 12500 0,02983400 0,02648500 (-11.2%) 25 4000 0,02946000 0,02518000 (-14.5%) 100 1000 0,03104300 0,02638000 (-15.0%) 500 200 0,04002000 0,03502500 (-12.5%) 2500 40 0,08090100 0,07562200 (-6.5%) 8000 12 0,19242600 0,18626800 (-3.2%) vmhraddshs: rept loop master patch 8 12500 0,03078600 0,02851000 (-7.4%) 25 4000 0,02793200 0,02746900 (-1.7%) 100 1000 0,02886000 0,02839900 (-1.6%) 500 200 0,03714700 0,03799200 (+2.3%) 2500 40 0,07948000 0,07852200 (-1.2%) 8000 12 0,19049800 0,18813900 (-1.2%) Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-3-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/helper.h | 4 ++-- target/ppc/insn32.decode | 2 ++ target/ppc/int_helper.c | 4 ++-- target/ppc/translate/vmx-impl.c.inc | 5 +++-- target/ppc/translate/vmx-ops.c.inc | 1 - 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 9c562ab00e..f02a9497b7 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -258,8 +258,8 @@ DEF_HELPER_4(vpkuhum, void, env, avr, avr, avr) DEF_HELPER_4(vpkuwum, void, env, avr, avr, avr) DEF_HELPER_4(vpkudum, void, env, avr, avr, avr) DEF_HELPER_FLAGS_3(vpkpx, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_5(vmhaddshs, void, env, avr, avr, avr, avr) -DEF_HELPER_5(vmhraddshs, void, env, avr, avr, avr, avr) +DEF_HELPER_5(VMHADDSHS, void, env, avr, avr, avr, avr) +DEF_HELPER_5(VMHRADDSHS, void, env, avr, avr, avr, avr) DEF_HELPER_FLAGS_4(VMSUMUHM, TCG_CALL_NO_RWG, void, avr, avr, avr, avr) DEF_HELPER_5(VMSUMUHS, void, env, avr, avr, avr, avr) DEF_HELPER_FLAGS_4(VMSUMSHM, TCG_CALL_NO_RWG, void, avr, avr, avr, avr) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 9ba1689230..4e142d5e23 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -694,6 +694,8 @@ VMSUMCUD 000100 ..... ..... ..... ..... 010111 = @VA VMSUMUDM 000100 ..... ..... ..... ..... 100011 @VA =20 VMLADDUHM 000100 ..... ..... ..... ..... 100010 @VA +VMHADDSHS 000100 ..... ..... ..... ..... 100000 @VA +VMHRADDSHS 000100 ..... ..... ..... ..... 100001 @VA =20 ## Vector String Instructions =20 diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index 0d25000b2a..ae1ba8084d 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -939,7 +939,7 @@ target_ulong helper_vctzlsbb(ppc_avr_t *r) return count; } =20 -void helper_vmhaddshs(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, +void helper_VMHADDSHS(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) { int sat =3D 0; @@ -957,7 +957,7 @@ void helper_vmhaddshs(CPUPPCState *env, ppc_avr_t *r, p= pc_avr_t *a, } } =20 -void helper_vmhraddshs(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, +void helper_VMHRADDSHS(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, ppc_avr_t *c) { int sat =3D 0; diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx= -impl.c.inc index 9f18c6d4f2..3acd585a2f 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -2521,7 +2521,7 @@ static void glue(gen_, name0##_##name1)(DisasContext = *ctx) \ tcg_temp_free_ptr(rd); \ } =20 -GEN_VAFORM_PAIRED(vmhaddshs, vmhraddshs, 16) +GEN_VAFORM_PAIRED(vmaddfp, vnmsubfp, 23) =20 static bool do_va_helper(DisasContext *ctx, arg_VA *a, void (*gen_helper)(TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_ptr)) @@ -2620,7 +2620,8 @@ static bool do_va_env_helper(DisasContext *ctx, arg_V= A *a, TRANS_FLAGS(ALTIVEC, VMSUMUHS, do_va_env_helper, gen_helper_VMSUMUHS) TRANS_FLAGS(ALTIVEC, VMSUMSHS, do_va_env_helper, gen_helper_VMSUMSHS) =20 -GEN_VAFORM_PAIRED(vmaddfp, vnmsubfp, 23) +TRANS_FLAGS(ALTIVEC, VMHADDSHS, do_va_env_helper, gen_helper_VMHADDSHS) +TRANS_FLAGS(ALTIVEC, VMHRADDSHS, do_va_env_helper, gen_helper_VMHRADDSHS) =20 GEN_VXFORM_NOA(vclzb, 1, 28) GEN_VXFORM_NOA(vclzh, 1, 29) diff --git a/target/ppc/translate/vmx-ops.c.inc b/target/ppc/translate/vmx-= ops.c.inc index a3a0fd0650..7cd9d40e06 100644 --- a/target/ppc/translate/vmx-ops.c.inc +++ b/target/ppc/translate/vmx-ops.c.inc @@ -219,7 +219,6 @@ GEN_VXFORM_UIMM(vctsxs, 5, 15), =20 #define GEN_VAFORM_PAIRED(name0, name1, opc2) \ GEN_HANDLER(name0##_##name1, 0x04, opc2, 0xFF, 0x00000000, PPC_ALTIVEC) -GEN_VAFORM_PAIRED(vmhaddshs, vmhraddshs, 16), GEN_VAFORM_PAIRED(vmaddfp, vnmsubfp, 23), =20 GEN_VXFORM_DUAL(vclzb, vpopcntb, 1, 28, PPC_NONE, PPC2_ALTIVEC_207), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975320; cv=none; d=zohomail.com; s=zohoarc; b=T5jgbdYHB4sShnarnGjsppfgwXUF38O7vVPQpTEzKu99vPkPBpi14By9dOuPqTQiFdCVV9q77sXoObNFU9rVCQWOPSVEVeQVn9DRd0o+h1jm63/v3Fo33HtEJpTyC/L/N30KuUP3ILwCklYVPjYCso8NuZfjNeLWIiWq/+EB0OM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975320; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LxSNmjzrFS624LPprcaYhDdsvB6llevUea9XE9HzxMU=; b=ABWxPe7QSnxhyu4zzNTIJD86dZdBw1sBS7SG/flgdYWMRktjdJbKk6A8gfwXz9pQcLvAA7d9+6b/Rz2ixVLEngXshkK0mHmRBxSGTE1g9dOXPHD0GGEa4OR7YTJV0B/+PWj0636uNnza+l8NZ62XR+c00ewru2tXKWbbM6kjPR8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975320027629.0006855211464; Fri, 28 Oct 2022 09:42:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQP-0003vK-MS; Fri, 28 Oct 2022 12:41:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPV-0005vn-VF; Fri, 28 Oct 2022 12:40:47 -0400 Received: from mail-oa1-x2c.google.com ([2001:4860:4864:20::2c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPS-0007zr-EC; Fri, 28 Oct 2022 12:40:44 -0400 Received: by mail-oa1-x2c.google.com with SMTP id 586e51a60fabf-13ba86b5ac0so6914086fac.1; Fri, 28 Oct 2022 09:40:41 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LxSNmjzrFS624LPprcaYhDdsvB6llevUea9XE9HzxMU=; b=Uq8YLjJdQ8h0CCapJlcTSxAevFt7EwYf2O7nqar4decA7V5MVFeC08Lw7l87ABolbu Bh7nUwGM7YTptheSUupg5pdKcfgVWLSYb5nHQumpj5yY85cDoTHeWIRbJleC1ihcBLII pyNX/Mx0+VK67DmevJHXCjswpg3CDKXICURFQNBo4fzAwPxxvMwMZZqxWN97ACHD4drY vjCN6Qd2JCUeD9w+vRdLF7eBRLHvlty+retiw2FUIl6MRP2VcR0yz/wTyBPcg9ru3Szj pnI+euAwjEn8ZDDTQAjpw0v10cD2jzXyA/o+XUuzI71oCRNGvS4sMaFZxGkbW2d5tlD7 ddjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LxSNmjzrFS624LPprcaYhDdsvB6llevUea9XE9HzxMU=; b=4ZqspjG9vsSZfg1FlN9zUqIfMtbO/9psHYOwluqKyuEHDAgRaKLfy/Ct1EA6L95u5m scVonICRXO7fmHthu7OqSeK/QVhiw2sPt16oUZ8lxg1kpkUWauWPgnN2jr39Yxe1WrrB XbdHNUskfP55ebUr4LjHTWOpx+Y+DyAieEDjPIJnvi83MDD33VkSI6cKvWk0QlVbTD6O zLOrVP2ImQVHmi0fkw48Ivlq+TGVUgDlpvQBRfe4tYVu3fitjlD8+xGO2DAKdeazgMyu hTI3Yj41DtkSLusuMXYz1w128btz2RavaqmqfvW6F9T3WN/lSE3O5v4ya8E/cqMdF2hR Y4cA== X-Gm-Message-State: ACrzQf2Sz0oVALFqUCY8lRVIuMdmqQF7lWYza1p9qWVu/ncnJfzSuHjO KN4nhyCshcKfJA5+moTm3Id5plDth/JHLg== X-Google-Smtp-Source: AMsMyM7qilRnJp2pyYl3VggkyQUmzs4d8tr7yZ8w5U5e+knSexvWj1W2bwxG+ywTToT+2np2d1He1Q== X-Received: by 2002:a05:6870:e3d1:b0:13c:9dbb:7e95 with SMTP id y17-20020a056870e3d100b0013c9dbb7e95mr16205oad.43.1666975240056; Fri, 28 Oct 2022 09:40:40 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 09/62] target/ppc: Move V(ADD|SUB)CUW to decodetree and use gvec Date: Fri, 28 Oct 2022 13:38:58 -0300 Message-Id: <20221028163951.810456-10-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2c; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975320897100003 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" This patch moves VADDCUW and VSUBCUW to decodtree with gvec using an implementation based on the helper, with the main difference being changing the -1 (aka all bits set to 1) result returned by cmp when true to +1. It also implemented a .fni4 version of those instructions and dropped the helper. vaddcuw: rept loop master patch 8 12500 0,01008200 0,00612400 (-39.3%) 25 4000 0,01091500 0,00471600 (-56.8%) 100 1000 0,01332500 0,00593700 (-55.4%) 500 200 0,01998500 0,01275700 (-36.2%) 2500 40 0,04704300 0,04364300 (-7.2%) 8000 12 0,10748200 0,11241000 (+4.6%) vsubcuw: rept loop master patch 8 12500 0,01226200 0,00571600 (-53.4%) 25 4000 0,01493500 0,00462100 (-69.1%) 100 1000 0,01522700 0,00455100 (-70.1%) 500 200 0,02384600 0,01133500 (-52.5%) 2500 40 0,04935200 0,03178100 (-35.6%) 8000 12 0,09039900 0,09440600 (+4.4%) Overall there was a gain in performance, but the TCGop code was still slightly bigger in the new version (it went from 4 to 5). Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-4-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/helper.h | 2 - target/ppc/insn32.decode | 2 + target/ppc/int_helper.c | 18 --------- target/ppc/translate/vmx-impl.c.inc | 61 +++++++++++++++++++++++++++-- target/ppc/translate/vmx-ops.c.inc | 3 +- 5 files changed, 60 insertions(+), 26 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index f02a9497b7..f7047ed2aa 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -193,11 +193,9 @@ DEF_HELPER_FLAGS_3(vslo, TCG_CALL_NO_RWG, void, avr, a= vr, avr) DEF_HELPER_FLAGS_3(vsro, TCG_CALL_NO_RWG, void, avr, avr, avr) DEF_HELPER_FLAGS_3(vsrv, TCG_CALL_NO_RWG, void, avr, avr, avr) DEF_HELPER_FLAGS_3(vslv, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_3(vaddcuw, TCG_CALL_NO_RWG, void, avr, avr, avr) DEF_HELPER_FLAGS_2(vprtybw, TCG_CALL_NO_RWG, void, avr, avr) DEF_HELPER_FLAGS_2(vprtybd, TCG_CALL_NO_RWG, void, avr, avr) DEF_HELPER_FLAGS_2(vprtybq, TCG_CALL_NO_RWG, void, avr, avr) -DEF_HELPER_FLAGS_3(vsubcuw, TCG_CALL_NO_RWG, void, avr, avr, avr) DEF_HELPER_FLAGS_5(vaddsbs, TCG_CALL_NO_RWG, void, avr, avr, avr, avr, i32) DEF_HELPER_FLAGS_5(vaddshs, TCG_CALL_NO_RWG, void, avr, avr, avr, avr, i32) DEF_HELPER_FLAGS_5(vaddsws, TCG_CALL_NO_RWG, void, avr, avr, avr, avr, i32) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 4e142d5e23..c985f8f1bf 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -608,12 +608,14 @@ VRLQNM 000100 ..... ..... ..... 00101000101 = @VX =20 ## Vector Integer Arithmetic Instructions =20 +VADDCUW 000100 ..... ..... ..... 00110000000 @VX VADDCUQ 000100 ..... ..... ..... 00101000000 @VX VADDUQM 000100 ..... ..... ..... 00100000000 @VX =20 VADDEUQM 000100 ..... ..... ..... ..... 111100 @VA VADDECUQ 000100 ..... ..... ..... ..... 111101 @VA =20 +VSUBCUW 000100 ..... ..... ..... 10110000000 @VX VSUBCUQ 000100 ..... ..... ..... 10101000000 @VX VSUBUQM 000100 ..... ..... ..... 10100000000 @VX =20 diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index ae1ba8084d..f8dd12e8ae 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -492,15 +492,6 @@ static inline void set_vscr_sat(CPUPPCState *env) env->vscr_sat.u32[0] =3D 1; } =20 -void helper_vaddcuw(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) -{ - int i; - - for (i =3D 0; i < ARRAY_SIZE(r->u32); i++) { - r->u32[i] =3D ~a->u32[i] < b->u32[i]; - } -} - /* vprtybw */ void helper_vprtybw(ppc_avr_t *r, ppc_avr_t *b) { @@ -1962,15 +1953,6 @@ void helper_vsro(ppc_avr_t *r, ppc_avr_t *a, ppc_avr= _t *b) #endif } =20 -void helper_vsubcuw(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) -{ - int i; - - for (i =3D 0; i < ARRAY_SIZE(r->u32); i++) { - r->u32[i] =3D a->u32[i] >=3D b->u32[i]; - } -} - void helper_vsumsws(CPUPPCState *env, ppc_avr_t *r, ppc_avr_t *a, ppc_avr_= t *b) { int64_t t; diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx= -impl.c.inc index 3acd585a2f..f52485a5f1 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -803,8 +803,6 @@ GEN_VXFORM(vsrv, 2, 28); GEN_VXFORM(vslv, 2, 29); GEN_VXFORM(vslo, 6, 16); GEN_VXFORM(vsro, 6, 17); -GEN_VXFORM(vaddcuw, 0, 6); -GEN_VXFORM(vsubcuw, 0, 22); =20 static bool do_vector_gvec3_VX(DisasContext *ctx, arg_VX *a, int vece, void (*gen_gvec)(unsigned, uint32_t, uint32= _t, @@ -2847,8 +2845,6 @@ static void gen_xpnd04_2(DisasContext *ctx) } =20 =20 -GEN_VXFORM_DUAL(vsubcuw, PPC_ALTIVEC, PPC_NONE, \ - xpnd04_1, PPC_NONE, PPC2_ISA300) GEN_VXFORM_DUAL(vsubsws, PPC_ALTIVEC, PPC_NONE, \ xpnd04_2, PPC_NONE, PPC2_ISA300) =20 @@ -3110,6 +3106,63 @@ TRANS_FLAGS2(ALTIVEC_207, VPMSUMD, do_vx_helper, gen= _helper_VPMSUMD) TRANS_FLAGS2(ALTIVEC_207, VSUBCUQ, do_vx_helper, gen_helper_VSUBCUQ) TRANS_FLAGS2(ALTIVEC_207, VSUBUQM, do_vx_helper, gen_helper_VSUBUQM) =20 +static void gen_VADDCUW_vec(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_ve= c b) +{ + tcg_gen_not_vec(vece, a, a); + tcg_gen_cmp_vec(TCG_COND_LTU, vece, t, a, b); + tcg_gen_and_vec(vece, t, t, tcg_constant_vec_matching(t, vece, 1)); +} + +static void gen_VADDCUW_i32(TCGv_i32 t, TCGv_i32 a, TCGv_i32 b) +{ + tcg_gen_not_i32(a, a); + tcg_gen_setcond_i32(TCG_COND_LTU, t, a, b); +} + +static void gen_VSUBCUW_vec(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_ve= c b) +{ + tcg_gen_cmp_vec(TCG_COND_GEU, vece, t, a, b); + tcg_gen_and_vec(vece, t, t, tcg_constant_vec_matching(t, vece, 1)); +} + +static void gen_VSUBCUW_i32(TCGv_i32 t, TCGv_i32 a, TCGv_i32 b) +{ + tcg_gen_setcond_i32(TCG_COND_GEU, t, a, b); +} + +static bool do_vx_vaddsubcuw(DisasContext *ctx, arg_VX *a, int add) +{ + static const TCGOpcode vecop_list[] =3D { + INDEX_op_cmp_vec, 0 + }; + + static const GVecGen3 op[] =3D { + { + .fniv =3D gen_VSUBCUW_vec, + .fni4 =3D gen_VSUBCUW_i32, + .opt_opc =3D vecop_list, + .vece =3D MO_32 + }, + { + .fniv =3D gen_VADDCUW_vec, + .fni4 =3D gen_VADDCUW_i32, + .opt_opc =3D vecop_list, + .vece =3D MO_32 + }, + }; + + REQUIRE_INSNS_FLAGS(ctx, ALTIVEC); + REQUIRE_VECTOR(ctx); + + tcg_gen_gvec_3(avr_full_offset(a->vrt), avr_full_offset(a->vra), + avr_full_offset(a->vrb), 16, 16, &op[add]); + + return true; +} + +TRANS(VSUBCUW, do_vx_vaddsubcuw, 0) +TRANS(VADDCUW, do_vx_vaddsubcuw, 1) + static bool do_vx_vmuleo(DisasContext *ctx, arg_VX *a, bool even, void (*gen_mul)(TCGv_i64, TCGv_i64, TCGv_i64, TCG= v_i64)) { diff --git a/target/ppc/translate/vmx-ops.c.inc b/target/ppc/translate/vmx-= ops.c.inc index 7cd9d40e06..ded0234123 100644 --- a/target/ppc/translate/vmx-ops.c.inc +++ b/target/ppc/translate/vmx-ops.c.inc @@ -106,12 +106,11 @@ GEN_VXFORM_300(vsrv, 2, 28), GEN_VXFORM_300(vslv, 2, 29), GEN_VXFORM(vslo, 6, 16), GEN_VXFORM(vsro, 6, 17), -GEN_VXFORM(vaddcuw, 0, 6), GEN_HANDLER_E_2(vprtybw, 0x4, 0x1, 0x18, 8, 0, PPC_NONE, PPC2_ISA300), GEN_HANDLER_E_2(vprtybd, 0x4, 0x1, 0x18, 9, 0, PPC_NONE, PPC2_ISA300), GEN_HANDLER_E_2(vprtybq, 0x4, 0x1, 0x18, 10, 0, PPC_NONE, PPC2_ISA300), =20 -GEN_VXFORM_DUAL(vsubcuw, xpnd04_1, 0, 22, PPC_ALTIVEC, PPC_NONE), +GEN_VXFORM(xpnd04_1, 0, 22), GEN_VXFORM_300(bcdsr, 0, 23), GEN_VXFORM_300(bcdsr, 0, 31), GEN_VXFORM_DUAL(vaddubs, vmul10uq, 0, 8, PPC_ALTIVEC, PPC_NONE), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975670; cv=none; d=zohomail.com; s=zohoarc; b=Zr4OAwyAtLqWr7v4Vbe2Lxoy7Bm2qSD3sYsUf06IUU0xYqLECDcnbxn5MsSAig3MI0L3lmIkDTrRuKm/hHHCpQdS+Y8Y3NFHB1TLPYdNhJspXwgZOBQhyTaY+BNMIjsHx+dKdDFFB4rT5pOHmf1T1K6BfMDiZ3Gf6ZgFzWdKnsY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975670; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=A8o0YYzfiE7PvuA9z+aNAz3Kkpq0pvrGYF+dBSjiwC4=; b=RqgseBCqx6Htphcbim19kBa9K8EvAfnH8UxGEpYiG1Ah1Zg6+nuj7G4n32Wq/6Vp6ccEMoq3s/+9ylIlIoDbY5rVyNB8gxAAYzEdKr3SjUcPUNOymtflczH7tIyq2dnfkU6SXkrNvX/qFEQmcNnooELBWrIZMUWTfeYMuO1fU3U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975670735692.0202485569448; Fri, 28 Oct 2022 09:47:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQQ-00048c-Oz; Fri, 28 Oct 2022 12:41:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPY-0006Bq-Ah; Fri, 28 Oct 2022 12:40:57 -0400 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPW-00082S-9X; Fri, 28 Oct 2022 12:40:47 -0400 Received: by mail-oi1-x231.google.com with SMTP id y67so6717043oiy.1; Fri, 28 Oct 2022 09:40:45 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=A8o0YYzfiE7PvuA9z+aNAz3Kkpq0pvrGYF+dBSjiwC4=; b=fkTPVzePzxjy4eo1oL6rYWSC1mk8frhwv5nI/Dbmo481BWNDT2n9q/MFgM1H+4aC8C ZCR+rR2Pk5PHH835hplKIqZkpptI5uY3rCGeENtzqXW4ssXxDGLhyQ0/kH7UqK5jLqMX e/kCd5xxMrAr9BwseuSkc8PbN7ZRGNyu0GdLMXuUq1/zZY8hFWzXasxR5p2zjQOOHWxD tDZO5VHPSutTTnszG3ka68ZeSNzXQDyAeWUXga2cWgq1Ba1KMLWzSkWFJBQ3HNtIzPMS UK/iMj2sqIOIWNHLjn+jZN2to9TdcUWyO735E+ZjUj9isd2ldxR1s+DuNuZB9DjXebSj cyew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A8o0YYzfiE7PvuA9z+aNAz3Kkpq0pvrGYF+dBSjiwC4=; b=QQ7hUCGjlvXh97CIJ5ou9CYfM1aLQZ3MmP54dnWpUSiEVMKaa3QaK96Yl6shMMwXb6 /xIX6OrioHpT8F735ePJGFEPQlPTkPudeq51bdDTd4DKYy6Itd6zJbAbanFuLmO4Ygta csHJShXIy3bOnnr8fnHdXd8QjEqMOaJjAfa06xwLEnJ+AfpZ+gWyi2BNttaEdE4dZfod pAmh1KeLeSJNWGHl+rkVQnY5JhWF48pMH+R2moei3v4uWwvdQY4z/D8RK0tWYOaaY3lj knfLa5VQMe6jXouhr40NS1CpN/WgwHiedkGdWeqgsHiy+pOoKR8i1top2qRQoW7ImTsx B/Zw== X-Gm-Message-State: ACrzQf2chlDIgMqu87yfl17fvidoGX1Oj4onqJ5wIzt/vijmJzQywVql u2FVqEJuKfkHyjc86hLl1CJL8TdK54Io9g== X-Google-Smtp-Source: AMsMyM6Ui9wyXKpDcKkt6eEmdOZgTMUi9GioF0V9wXkEc5V9ZtbvPLGgRXixUAJxdBJp7iXS8l5yXA== X-Received: by 2002:a05:6808:1205:b0:354:2815:4f3c with SMTP id a5-20020a056808120500b0035428154f3cmr8696549oil.26.1666975244421; Fri, 28 Oct 2022 09:40:44 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 10/62] target/ppc: Move VNEG[WD] to decodtree and use gvec Date: Fri, 28 Oct 2022 13:38:59 -0300 Message-Id: <20221028163951.810456-11-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::231; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x231.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975672834100003 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Moved the instructions VNEGW and VNEGD to decodetree and used gvec to decode it. vnegw: rept loop master patch 8 12500 0,01053200 0,00548400 (-47.9%) 25 4000 0,01030500 0,00390000 (-62.2%) 100 1000 0,01096300 0,00395400 (-63.9%) 500 200 0,01472000 0,00712300 (-51.6%) 2500 40 0,03809000 0,02147700 (-43.6%) 8000 12 0,09957100 0,06202100 (-37.7%) vnegd: rept loop master patch 8 12500 0,00594600 0,00543800 (-8.5%) 25 4000 0,00575200 0,00396400 (-31.1%) 100 1000 0,00676100 0,00394800 (-41.6%) 500 200 0,01149300 0,00709400 (-38.3%) 2500 40 0,03441500 0,02169600 (-37.0%) 8000 12 0,09516900 0,06337000 (-33.4%) Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-5-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/helper.h | 2 -- target/ppc/insn32.decode | 3 +++ target/ppc/int_helper.c | 12 ------------ target/ppc/translate/vmx-impl.c.inc | 15 +++++++++++++-- target/ppc/translate/vmx-ops.c.inc | 2 -- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index f7047ed2aa..b2e910b089 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -229,8 +229,6 @@ DEF_HELPER_FLAGS_2(VSTRIBL, TCG_CALL_NO_RWG, i32, avr, = avr) DEF_HELPER_FLAGS_2(VSTRIBR, TCG_CALL_NO_RWG, i32, avr, avr) DEF_HELPER_FLAGS_2(VSTRIHL, TCG_CALL_NO_RWG, i32, avr, avr) DEF_HELPER_FLAGS_2(VSTRIHR, TCG_CALL_NO_RWG, i32, avr, avr) -DEF_HELPER_FLAGS_2(vnegw, TCG_CALL_NO_RWG, void, avr, avr) -DEF_HELPER_FLAGS_2(vnegd, TCG_CALL_NO_RWG, void, avr, avr) DEF_HELPER_FLAGS_2(vupkhpx, TCG_CALL_NO_RWG, void, avr, avr) DEF_HELPER_FLAGS_2(vupklpx, TCG_CALL_NO_RWG, void, avr, avr) DEF_HELPER_FLAGS_2(vupkhsb, TCG_CALL_NO_RWG, void, avr, avr) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index c985f8f1bf..2fafde075b 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -629,6 +629,9 @@ VEXTSH2D 000100 ..... 11001 ..... 11000000010 = @VX_tb VEXTSW2D 000100 ..... 11010 ..... 11000000010 @VX_tb VEXTSD2Q 000100 ..... 11011 ..... 11000000010 @VX_tb =20 +VNEGD 000100 ..... 00111 ..... 11000000010 @VX_tb +VNEGW 000100 ..... 00110 ..... 11000000010 @VX_tb + ## Vector Mask Manipulation Instructions =20 MTVSRBM 000100 ..... 10000 ..... 11001000010 @VX_tb diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index f8dd12e8ae..c7fd0d1faa 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -1928,18 +1928,6 @@ XXBLEND(W, 32) XXBLEND(D, 64) #undef XXBLEND =20 -#define VNEG(name, element) \ -void helper_##name(ppc_avr_t *r, ppc_avr_t *b) \ -{ \ - int i; \ - for (i =3D 0; i < ARRAY_SIZE(r->element); i++) { \ - r->element[i] =3D -b->element[i]; \ - } \ -} -VNEG(vnegw, s32) -VNEG(vnegd, s64) -#undef VNEG - void helper_vsro(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) { int sh =3D (b->VsrB(0xf) >> 3) & 0xf; diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx= -impl.c.inc index f52485a5f1..b9a9e83ab3 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -2625,8 +2625,19 @@ GEN_VXFORM_NOA(vclzb, 1, 28) GEN_VXFORM_NOA(vclzh, 1, 29) GEN_VXFORM_TRANS(vclzw, 1, 30) GEN_VXFORM_TRANS(vclzd, 1, 31) -GEN_VXFORM_NOA_2(vnegw, 1, 24, 6) -GEN_VXFORM_NOA_2(vnegd, 1, 24, 7) + +static bool do_vneg(DisasContext *ctx, arg_VX_tb *a, unsigned vece) +{ + REQUIRE_INSNS_FLAGS2(ctx, ISA300); + REQUIRE_VECTOR(ctx); + + tcg_gen_gvec_neg(vece, avr_full_offset(a->vrt), avr_full_offset(a->vrb= ), + 16, 16); + return true; +} + +TRANS(VNEGW, do_vneg, MO_32) +TRANS(VNEGD, do_vneg, MO_64) =20 static void gen_vexts_i64(TCGv_i64 t, TCGv_i64 b, int64_t s) { diff --git a/target/ppc/translate/vmx-ops.c.inc b/target/ppc/translate/vmx-= ops.c.inc index ded0234123..27908533dd 100644 --- a/target/ppc/translate/vmx-ops.c.inc +++ b/target/ppc/translate/vmx-ops.c.inc @@ -181,8 +181,6 @@ GEN_VXFORM_300_EXT(vextractd, 6, 11, 0x100000), GEN_VXFORM(vspltisb, 6, 12), GEN_VXFORM(vspltish, 6, 13), GEN_VXFORM(vspltisw, 6, 14), -GEN_VXFORM_300_EO(vnegw, 0x01, 0x18, 0x06), -GEN_VXFORM_300_EO(vnegd, 0x01, 0x18, 0x07), GEN_VXFORM_300_EO(vctzb, 0x01, 0x18, 0x1C), GEN_VXFORM_300_EO(vctzh, 0x01, 0x18, 0x1D), GEN_VXFORM_300_EO(vctzw, 0x01, 0x18, 0x1E), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975407; cv=none; d=zohomail.com; s=zohoarc; b=f2FwC+/IRbAeF4m5vRLXExQptiM5DfsX3MckxGgxgzt5gJqEkUhqU2k56InDU99lTjec2kOxdLHNfNFIiPbWxqX5eP43YwuRtnTDD7HWXGMph1vPIbsOSAsgYgRHBaduuxDvcRtgIuesOsUD1HtRSpIkfUx6cOQ5MyQtc2lVdwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975407; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NbTZuZJWySTEeGCJDM1gWxrGKhmGf/b6AlbK9Zgdwis=; b=TId6cMim4quxzBq1Ne+/p4YJ/34/M8u8uWgIOJ5LDSuSNcdIV5w7YIGwkQsJd+fpfohMCzexmlN788jEcHGGgnGaJY1liU0J6S7NPg4a/GZaBj4MIUfWfSJyND7URFGvJaMINTGHOR5bV32FJLWr5SVa2OOQBQGANga7sRclfUU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975407195140.6288946055937; Fri, 28 Oct 2022 09:43:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQv-0008Qf-22; Fri, 28 Oct 2022 12:42:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPd-0006iD-JV; Fri, 28 Oct 2022 12:40:59 -0400 Received: from mail-oi1-x232.google.com ([2607:f8b0:4864:20::232]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPa-00083x-M4; Fri, 28 Oct 2022 12:40:53 -0400 Received: by mail-oi1-x232.google.com with SMTP id p127so6675416oih.9; Fri, 28 Oct 2022 09:40:49 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NbTZuZJWySTEeGCJDM1gWxrGKhmGf/b6AlbK9Zgdwis=; b=S7b5kJAKncBpUpc3zdnBkgKzhfREGQdZffQXWqvAcbGdvacU6rSsMtKRtU9zy9oOlF d1Tsw+qZ4TQoRm70AGIxYEB4TXWxvl00gUY6X4EDt20eAlmuHuWWkDlfJTyoWKOoEHkx DgpL367bXxO5L8y31QXkAqVxoryL5nigIM8zYkPD8eEDXzAk9iQdqZZx3/D4pBK+4JTg zgqRAW5jbuPVsfdydV1LPR47BLlMlI1rmDqwj3W3jmtLg0rWZjwN+ONLnzXRDgOdqOPO aB46ED8u9/x6KRjhnQf4oEYDlbLJ0XEoU2/6IHLQ1Z/jgVlEI+Nx92hqhmwSFSyere52 MnBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NbTZuZJWySTEeGCJDM1gWxrGKhmGf/b6AlbK9Zgdwis=; b=K6X/GuMu6cD3OINimDGlKozKmyyFmmeK0fmFoYvMmtphIasQztnvbUkyy+aXAd2MMK JVTKRpX6oS1yw7+FCwrXQMocyNPTh7I5nSkFHAGbcBacy+lub/vorcxiYyfe9zqX1S/q v8AoA/WWl7bx5DgtU9XOb6zNwd86y+q0nVkIMyNY1vSe6R2BBkWXqC/sgz8L9RDJ/1Wb JWUH3gYyNg9bdc9dg5mzuexioqqV7S7anxXE+6xmMtN6X6JF5mFzJD18irZ1h+cHkqWI X1rgONQxCkQ+7dyBibZ7QWQpgSPdLxoc0zHk5HN9lpv40rsn2zNvUX6h5PPmtXzBVZ8F /vqQ== X-Gm-Message-State: ACrzQf3S3m+jfy4xOLXBkm4tK+2rZENiaLohOPVEGbC31URF9LNe85sK mSWOT9hGr0oieGnOh7BQoSVcEL2PgII5IA== X-Google-Smtp-Source: AMsMyM6U+UX6qS2vM4BvvLx4JLP7VytiZTIbakMhfrHwJ6Aaf5aTqKMup6NNOSEZXcoJVyirxYl8MQ== X-Received: by 2002:a05:6808:188e:b0:359:e0c0:1ccd with SMTP id bi14-20020a056808188e00b00359e0c01ccdmr388209oib.181.1666975248807; Fri, 28 Oct 2022 09:40:48 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 11/62] target/ppc: Move VPRTYB[WDQ] to decodetree and use gvec Date: Fri, 28 Oct 2022 13:39:00 -0300 Message-Id: <20221028163951.810456-12-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::232; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x232.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975407510100001 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Moved VPRTYBW and VPRTYBD to use gvec and both of them and VPRTYBQ to decodetree. VPRTYBW and VPRTYBD now also use .fni4 and .fni8, respectively. vprtybw: rept loop master patch 8 12500 0,01198900 0,00703100 (-41.4%) 25 4000 0,01070100 0,00571400 (-46.6%) 100 1000 0,01123300 0,00678200 (-39.6%) 500 200 0,01601500 0,01535600 (-4.1%) 2500 40 0,03872900 0,05562100 (43.6%) 8000 12 0,10047000 0,16643000 (65.7%) vprtybd: rept loop master patch 8 12500 0,00757700 0,00788100 (4.0%) 25 4000 0,00652500 0,00669600 (2.6%) 100 1000 0,00714400 0,00825400 (15.5%) 500 200 0,01211000 0,01903700 (57.2%) 2500 40 0,03483800 0,07021200 (101.5%) 8000 12 0,09591800 0,21036200 (119.3%) vprtybq: rept loop master patch 8 12500 0,00675600 0,00667200 (-1.2%) 25 4000 0,00619400 0,00643200 (3.8%) 100 1000 0,00707100 0,00751100 (6.2%) 500 200 0,01199300 0,01342000 (11.9%) 2500 40 0,03490900 0,04092900 (17.2%) 8000 12 0,09588200 0,11465100 (19.6%) I wasn't expecting such a performance lost in both VPRTYBD and VPRTYBQ, I'm not sure if it's worth to move those instructions. Comparing the assembly of the helper with the TCGop they are pretty similar, so I'm not sure why vprtybd took so much more time. Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-6-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/helper.h | 4 +- target/ppc/insn32.decode | 4 ++ target/ppc/int_helper.c | 25 +---------- target/ppc/translate/vmx-impl.c.inc | 68 +++++++++++++++++++++++++++-- target/ppc/translate/vmx-ops.c.inc | 3 -- 5 files changed, 71 insertions(+), 33 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index b2e910b089..a06193bc67 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -193,9 +193,7 @@ DEF_HELPER_FLAGS_3(vslo, TCG_CALL_NO_RWG, void, avr, av= r, avr) DEF_HELPER_FLAGS_3(vsro, TCG_CALL_NO_RWG, void, avr, avr, avr) DEF_HELPER_FLAGS_3(vsrv, TCG_CALL_NO_RWG, void, avr, avr, avr) DEF_HELPER_FLAGS_3(vslv, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_2(vprtybw, TCG_CALL_NO_RWG, void, avr, avr) -DEF_HELPER_FLAGS_2(vprtybd, TCG_CALL_NO_RWG, void, avr, avr) -DEF_HELPER_FLAGS_2(vprtybq, TCG_CALL_NO_RWG, void, avr, avr) +DEF_HELPER_FLAGS_3(VPRTYBQ, TCG_CALL_NO_RWG, void, avr, avr, i32) DEF_HELPER_FLAGS_5(vaddsbs, TCG_CALL_NO_RWG, void, avr, avr, avr, avr, i32) DEF_HELPER_FLAGS_5(vaddshs, TCG_CALL_NO_RWG, void, avr, avr, avr, avr, i32) DEF_HELPER_FLAGS_5(vaddsws, TCG_CALL_NO_RWG, void, avr, avr, avr, avr, i32) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 2fafde075b..b05c89efee 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -529,6 +529,10 @@ VCTZDM 000100 ..... ..... ..... 11111000100 = @VX VPDEPD 000100 ..... ..... ..... 10111001101 @VX VPEXTD 000100 ..... ..... ..... 10110001101 @VX =20 +VPRTYBD 000100 ..... 01001 ..... 11000000010 @VX_tb +VPRTYBQ 000100 ..... 01010 ..... 11000000010 @VX_tb +VPRTYBW 000100 ..... 01000 ..... 11000000010 @VX_tb + ## Vector Permute and Formatting Instruction =20 VEXTDUBVLX 000100 ..... ..... ..... ..... 011000 @VA diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index c7fd0d1faa..c6ce4665fa 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -492,31 +492,8 @@ static inline void set_vscr_sat(CPUPPCState *env) env->vscr_sat.u32[0] =3D 1; } =20 -/* vprtybw */ -void helper_vprtybw(ppc_avr_t *r, ppc_avr_t *b) -{ - int i; - for (i =3D 0; i < ARRAY_SIZE(r->u32); i++) { - uint64_t res =3D b->u32[i] ^ (b->u32[i] >> 16); - res ^=3D res >> 8; - r->u32[i] =3D res & 1; - } -} - -/* vprtybd */ -void helper_vprtybd(ppc_avr_t *r, ppc_avr_t *b) -{ - int i; - for (i =3D 0; i < ARRAY_SIZE(r->u64); i++) { - uint64_t res =3D b->u64[i] ^ (b->u64[i] >> 32); - res ^=3D res >> 16; - res ^=3D res >> 8; - r->u64[i] =3D res & 1; - } -} - /* vprtybq */ -void helper_vprtybq(ppc_avr_t *r, ppc_avr_t *b) +void helper_VPRTYBQ(ppc_avr_t *r, ppc_avr_t *b, uint32_t v) { uint64_t res =3D b->u64[0] ^ b->u64[1]; res ^=3D res >> 32; diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx= -impl.c.inc index b9a9e83ab3..cbb2a3ebe7 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -1659,9 +1659,71 @@ GEN_VXFORM_NOA_ENV(vrfim, 5, 11); GEN_VXFORM_NOA_ENV(vrfin, 5, 8); GEN_VXFORM_NOA_ENV(vrfip, 5, 10); GEN_VXFORM_NOA_ENV(vrfiz, 5, 9); -GEN_VXFORM_NOA(vprtybw, 1, 24); -GEN_VXFORM_NOA(vprtybd, 1, 24); -GEN_VXFORM_NOA(vprtybq, 1, 24); + +static void gen_vprtyb_vec(unsigned vece, TCGv_vec t, TCGv_vec b) +{ + int i; + TCGv_vec tmp =3D tcg_temp_new_vec_matching(b); + /* MO_32 is 2, so 2 iteractions for MO_32 and 3 for MO_64 */ + for (i =3D 0; i < vece; i++) { + tcg_gen_shri_vec(vece, tmp, b, (4 << (vece - i))); + tcg_gen_xor_vec(vece, b, tmp, b); + } + tcg_gen_and_vec(vece, t, b, tcg_constant_vec_matching(t, vece, 1)); + tcg_temp_free_vec(tmp); +} + +/* vprtybw */ +static void gen_vprtyb_i32(TCGv_i32 t, TCGv_i32 b) +{ + tcg_gen_ctpop_i32(t, b); + tcg_gen_and_i32(t, t, tcg_constant_i32(1)); +} + +/* vprtybd */ +static void gen_vprtyb_i64(TCGv_i64 t, TCGv_i64 b) +{ + tcg_gen_ctpop_i64(t, b); + tcg_gen_and_i64(t, t, tcg_constant_i64(1)); +} + +static bool do_vx_vprtyb(DisasContext *ctx, arg_VX_tb *a, unsigned vece) +{ + static const TCGOpcode vecop_list[] =3D { + INDEX_op_shri_vec, 0 + }; + + static const GVecGen2 op[] =3D { + { + .fniv =3D gen_vprtyb_vec, + .fni4 =3D gen_vprtyb_i32, + .opt_opc =3D vecop_list, + .vece =3D MO_32 + }, + { + .fniv =3D gen_vprtyb_vec, + .fni8 =3D gen_vprtyb_i64, + .opt_opc =3D vecop_list, + .vece =3D MO_64 + }, + { + .fno =3D gen_helper_VPRTYBQ, + .vece =3D MO_128 + }, + }; + + REQUIRE_INSNS_FLAGS2(ctx, ISA300); + REQUIRE_VECTOR(ctx); + + tcg_gen_gvec_2(avr_full_offset(a->vrt), avr_full_offset(a->vrb), + 16, 16, &op[vece - MO_32]); + + return true; +} + +TRANS(VPRTYBW, do_vx_vprtyb, MO_32) +TRANS(VPRTYBD, do_vx_vprtyb, MO_64) +TRANS(VPRTYBQ, do_vx_vprtyb, MO_128) =20 static void gen_vsplt(DisasContext *ctx, int vece) { diff --git a/target/ppc/translate/vmx-ops.c.inc b/target/ppc/translate/vmx-= ops.c.inc index 27908533dd..46a620a232 100644 --- a/target/ppc/translate/vmx-ops.c.inc +++ b/target/ppc/translate/vmx-ops.c.inc @@ -106,9 +106,6 @@ GEN_VXFORM_300(vsrv, 2, 28), GEN_VXFORM_300(vslv, 2, 29), GEN_VXFORM(vslo, 6, 16), GEN_VXFORM(vsro, 6, 17), -GEN_HANDLER_E_2(vprtybw, 0x4, 0x1, 0x18, 8, 0, PPC_NONE, PPC2_ISA300), -GEN_HANDLER_E_2(vprtybd, 0x4, 0x1, 0x18, 9, 0, PPC_NONE, PPC2_ISA300), -GEN_HANDLER_E_2(vprtybq, 0x4, 0x1, 0x18, 10, 0, PPC_NONE, PPC2_ISA300), =20 GEN_VXFORM(xpnd04_1, 0, 22), GEN_VXFORM_300(bcdsr, 0, 23), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975326; cv=none; d=zohomail.com; s=zohoarc; b=IGtamM/5iAdonA3nCgBCFDQdJjkY3M2jOK67mZ+FJBePkQVa33smjJhIZd4+F/BULfij56yRc4HV3VFmUPDZ8D4M7zgE04b5BPGYJYyBlG74YfdBJGJz6CxYd6/7yx0m7S2wmoUVD51Mv488oK3UVRVavM3F7IBjuVEiXtPVY5k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975326; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dJcQ1Nv2q062nRbJitb2oYb1BEtXAInRHBk6FB6kj4o=; b=FK2JRRE5/GP67JD6Kmrki5638FQpBYrMRtWARPSocayb/XDmSkSayqhsLtkWjkAXUsp1CwiuP+zlO5KMXYYIEFnMBnbQ1Rtwv8v3A2vNst1BcYHAdfOvCQiUbV63Ed779/3slkmmAWvbbOayHMM2y8Z5HVMFSNh9jUWPD8mvF6k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975326152275.61917461286373; Fri, 28 Oct 2022 09:42:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQR-0004Hc-Ii; Fri, 28 Oct 2022 12:41:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPg-0006yN-70; Fri, 28 Oct 2022 12:41:01 -0400 Received: from mail-oa1-x2c.google.com ([2001:4860:4864:20::2c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPe-0007zr-2h; Fri, 28 Oct 2022 12:40:55 -0400 Received: by mail-oa1-x2c.google.com with SMTP id 586e51a60fabf-13ba86b5ac0so6914865fac.1; Fri, 28 Oct 2022 09:40:53 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dJcQ1Nv2q062nRbJitb2oYb1BEtXAInRHBk6FB6kj4o=; b=mmCjFynrtmpsDl3Mi5Sa1wqc/YkGy5KiSF92NBXG9JZ6mW1G5SF8Q5cHBYI6IG6I0A V4EZIuPs21aHG23NkPkBal6VA6YMv51Jsweyfg/3h+wVuLZmCYR1W9FqtRevaU3WykpX qZPQohbMMMexgZljwlN0LQxjCPKzW5dmjPn4rIJaVHS4C859F5iBzkxbUAMi2nah9nqR DyrGTBeJzliu1Y7GtGIWTfHoNZYEEdfK6xllfV89VRDsmqUWY0Wz/o0NFgvK2cTLJkgb REOdoWN8j9oeySmlP+2gNt6qB4WAeD0eTEseGFvjHEKHercsJMOWKpJrd8zK0uGs7ZF1 mN7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dJcQ1Nv2q062nRbJitb2oYb1BEtXAInRHBk6FB6kj4o=; b=vr9Ua3yLO/2tUgCNTDElTi9iSIobTfMLvGKLwUhwawQBxBefOVnnp1vRxkOh71pTMI 1maBFikrmPkkNTcrpmL6uoin0TrldEhu6IdXwtevokxTbmafKyGWEFSpaYDfZtWMf619 jpHlHsaQH2BuqofKu3/1/mjj5cY+ZAjjd0558Sr+kF2CV1lZBaj1NHm7ZH4xVKsO1Grh oY2BX/8i0S2xJ9CysE52rLNgrFVJfoq1jjhkbiuGEJF7ARWuQlFBzovLOkMkdT7L4b5V KFCCrbeMmCAZLJ/fTlYdgOuIa7jNhfVy1YyA3vePGO9wmVWdIDI4o9rpaOfCuhNTBY/0 lJGg== X-Gm-Message-State: ACrzQf3hTKEy+faHVavOZwskRZbrDwTmO+hIm7SkEDcjuzjyWiMzFdYF fTsGFR+g5V8zUeV+4inYSM9gLIKwYB0fHQ== X-Google-Smtp-Source: AMsMyM6aY2abb79m4S4CKyiVaiDXAgTcPCd8QdK1iFTE9alrOUA1OpEAYz2xTF8b60KDqFFe2CAVNQ== X-Received: by 2002:a05:6870:a920:b0:131:87f8:1c67 with SMTP id eq32-20020a056870a92000b0013187f81c67mr9915358oab.76.1666975252715; Fri, 28 Oct 2022 09:40:52 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 12/62] target/ppc: Move VAVG[SU][BHW] to decodetree and use gvec Date: Fri, 28 Oct 2022 13:39:01 -0300 Message-Id: <20221028163951.810456-13-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2c; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975328913100003 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Moved the instructions VAVGUB, VAVGUH, VAVGUW, VAVGSB, VAVGSH, VAVGSW, to decodetree and use gvec with them. For these one the right shift had to be made before the sum as to avoid an overflow, so add 1 at the end if any of the entries had 1 in its LSB as to replicate the "+ 1" before the shift described by the ISA. vavgub: rept loop master patch 8 12500 0,02616600 0,00754200 (-71.2%) 25 4000 0,02530000 0,00637700 (-74.8%) 100 1000 0,02604600 0,00790100 (-69.7%) 500 200 0,03189300 0,01838400 (-42.4%) 2500 40 0,06006900 0,06851000 (+14.1%) 8000 12 0,13941000 0,20548500 (+47.4%) vavguh: rept loop master patch 8 12500 0,01818200 0,00780600 (-57.1%) 25 4000 0,01789300 0,00641600 (-64.1%) 100 1000 0,01899100 0,00787200 (-58.5%) 500 200 0,02527200 0,01828400 (-27.7%) 2500 40 0,05361800 0,06773000 (+26.3%) 8000 12 0,12886600 0,20291400 (+57.5%) vavguw: rept loop master patch 8 12500 0,01423100 0,00776600 (-45.4%) 25 4000 0,01780800 0,00638600 (-64.1%) 100 1000 0,02085500 0,00787000 (-62.3%) 500 200 0,02737100 0,01828800 (-33.2%) 2500 40 0,05572600 0,06774200 (+21.6%) 8000 12 0,13101700 0,20311600 (+55.0%) vavgsb: rept loop master patch 8 12500 0,03006000 0,00788600 (-73.8%) 25 4000 0,02882200 0,00637800 (-77.9%) 100 1000 0,02958000 0,00791400 (-73.2%) 500 200 0,03548800 0,01860400 (-47.6%) 2500 40 0,06360000 0,06850800 (+7.7%) 8000 12 0,13816500 0,20550300 (+48.7%) vavgsh: rept loop master patch 8 12500 0,01965900 0,00776600 (-60.5%) 25 4000 0,01875400 0,00638700 (-65.9%) 100 1000 0,01952200 0,00786900 (-59.7%) 500 200 0,02562000 0,01760300 (-31.3%) 2500 40 0,05384300 0,06742800 (+25.2%) 8000 12 0,13240800 0,20330000 (+53.5%) vavgsw: rept loop master patch 8 12500 0,01407700 0,00775600 (-44.9%) 25 4000 0,01762300 0,00640000 (-63.7%) 100 1000 0,02046500 0,00788500 (-61.5%) 500 200 0,02745600 0,01843000 (-32.9%) 2500 40 0,05375500 0,06820500 (+26.9%) 8000 12 0,13068300 0,20304900 (+55.4%) These results to me seems to indicate that with gvec the results have a slower translation but faster execution. Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-7-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/helper.h | 12 ++-- target/ppc/insn32.decode | 9 +++ target/ppc/int_helper.c | 32 ++++----- target/ppc/translate/vmx-impl.c.inc | 106 ++++++++++++++++++++++++---- target/ppc/translate/vmx-ops.c.inc | 9 +-- 5 files changed, 127 insertions(+), 41 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index a06193bc67..71c22efc2e 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -143,15 +143,15 @@ DEF_HELPER_FLAGS_1(ftsqrt, TCG_CALL_NO_RWG_SE, i32, i= 64) #define dh_ctype_acc ppc_acc_t * #define dh_typecode_acc dh_typecode_ptr =20 -DEF_HELPER_FLAGS_3(vavgub, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_3(vavguh, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_3(vavguw, TCG_CALL_NO_RWG, void, avr, avr, avr) +DEF_HELPER_FLAGS_4(VAVGUB, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) +DEF_HELPER_FLAGS_4(VAVGUH, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) +DEF_HELPER_FLAGS_4(VAVGUW, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) DEF_HELPER_FLAGS_3(vabsdub, TCG_CALL_NO_RWG, void, avr, avr, avr) DEF_HELPER_FLAGS_3(vabsduh, TCG_CALL_NO_RWG, void, avr, avr, avr) DEF_HELPER_FLAGS_3(vabsduw, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_3(vavgsb, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_3(vavgsh, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_3(vavgsw, TCG_CALL_NO_RWG, void, avr, avr, avr) +DEF_HELPER_FLAGS_4(VAVGSB, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) +DEF_HELPER_FLAGS_4(VAVGSH, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) +DEF_HELPER_FLAGS_4(VAVGSW, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) DEF_HELPER_4(vcmpeqfp, void, env, avr, avr, avr) DEF_HELPER_4(vcmpgefp, void, env, avr, avr, avr) DEF_HELPER_4(vcmpgtfp, void, env, avr, avr, avr) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index b05c89efee..53dd45bbab 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -519,6 +519,15 @@ VCMPNEZW 000100 ..... ..... ..... . 0110000111 = @VC VCMPSQ 000100 ... -- ..... ..... 00101000001 @VX_bf VCMPUQ 000100 ... -- ..... ..... 00100000001 @VX_bf =20 +## Vector Integer Average Instructions + +VAVGSB 000100 ..... ..... ..... 10100000010 @VX +VAVGSH 000100 ..... ..... ..... 10101000010 @VX +VAVGSW 000100 ..... ..... ..... 10110000010 @VX +VAVGUB 000100 ..... ..... ..... 10000000010 @VX +VAVGUH 000100 ..... ..... ..... 10001000010 @VX +VAVGUW 000100 ..... ..... ..... 10010000010 @VX + ## Vector Bit Manipulation Instruction =20 VGNB 000100 ..... -- ... ..... 10011001100 @VX_n diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index c6ce4665fa..bda76e54d4 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -570,25 +570,23 @@ VARITHSAT_UNSIGNED(w, u32, uint64_t, cvtsduw) #undef VARITHSAT_SIGNED #undef VARITHSAT_UNSIGNED =20 -#define VAVG_DO(name, element, etype) \ - void helper_v##name(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ - { \ - int i; \ - \ - for (i =3D 0; i < ARRAY_SIZE(r->element); i++) { \ - etype x =3D (etype)a->element[i] + (etype)b->element[i] + 1; \ - r->element[i] =3D x >> 1; \ - } \ +#define VAVG(name, element, etype) = \ + void helper_##name(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, uint32_t = v)\ + { = \ + int i; = \ + = \ + for (i =3D 0; i < ARRAY_SIZE(r->element); i++) { = \ + etype x =3D (etype)a->element[i] + (etype)b->element[i] + 1; = \ + r->element[i] =3D x >> 1; = \ + } = \ } =20 -#define VAVG(type, signed_element, signed_type, unsigned_element, \ - unsigned_type) \ - VAVG_DO(avgs##type, signed_element, signed_type) \ - VAVG_DO(avgu##type, unsigned_element, unsigned_type) -VAVG(b, s8, int16_t, u8, uint16_t) -VAVG(h, s16, int32_t, u16, uint32_t) -VAVG(w, s32, int64_t, u32, uint64_t) -#undef VAVG_DO +VAVG(VAVGSB, s8, int16_t) +VAVG(VAVGUB, u8, uint16_t) +VAVG(VAVGSH, s16, int32_t) +VAVG(VAVGUH, u16, uint32_t) +VAVG(VAVGSW, s32, int64_t) +VAVG(VAVGUW, u32, uint64_t) #undef VAVG =20 #define VABSDU_DO(name, element) \ diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx= -impl.c.inc index cbb2a3ebe7..195c601f7a 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -431,21 +431,9 @@ GEN_VXFORM_V(vminsb, MO_8, tcg_gen_gvec_smin, 1, 12); GEN_VXFORM_V(vminsh, MO_16, tcg_gen_gvec_smin, 1, 13); GEN_VXFORM_V(vminsw, MO_32, tcg_gen_gvec_smin, 1, 14); GEN_VXFORM_V(vminsd, MO_64, tcg_gen_gvec_smin, 1, 15); -GEN_VXFORM(vavgub, 1, 16); GEN_VXFORM(vabsdub, 1, 16); -GEN_VXFORM_DUAL(vavgub, PPC_ALTIVEC, PPC_NONE, \ - vabsdub, PPC_NONE, PPC2_ISA300) -GEN_VXFORM(vavguh, 1, 17); GEN_VXFORM(vabsduh, 1, 17); -GEN_VXFORM_DUAL(vavguh, PPC_ALTIVEC, PPC_NONE, \ - vabsduh, PPC_NONE, PPC2_ISA300) -GEN_VXFORM(vavguw, 1, 18); GEN_VXFORM(vabsduw, 1, 18); -GEN_VXFORM_DUAL(vavguw, PPC_ALTIVEC, PPC_NONE, \ - vabsduw, PPC_NONE, PPC2_ISA300) -GEN_VXFORM(vavgsb, 1, 20); -GEN_VXFORM(vavgsh, 1, 21); -GEN_VXFORM(vavgsw, 1, 22); GEN_VXFORM(vmrghb, 6, 0); GEN_VXFORM(vmrghh, 6, 1); GEN_VXFORM(vmrghw, 6, 2); @@ -3373,6 +3361,100 @@ TRANS(VMULHSD, do_vx_mulh, true , do_vx_vmulhd_i64) TRANS(VMULHUW, do_vx_mulh, false, do_vx_vmulhw_i64) TRANS(VMULHUD, do_vx_mulh, false, do_vx_vmulhd_i64) =20 +static void do_vavg(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_vec b, + void (*gen_shr_vec)(unsigned, TCGv_vec, TCGv_vec, int6= 4_t)) +{ + TCGv_vec tmp =3D tcg_temp_new_vec_matching(t); + tcg_gen_or_vec(vece, tmp, a, b); + tcg_gen_and_vec(vece, tmp, tmp, tcg_constant_vec_matching(t, vece, 1)); + gen_shr_vec(vece, a, a, 1); + gen_shr_vec(vece, b, b, 1); + tcg_gen_add_vec(vece, t, a, b); + tcg_gen_add_vec(vece, t, t, tmp); + tcg_temp_free_vec(tmp); +} + +QEMU_FLATTEN +static void gen_vavgu(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_vec b) +{ + do_vavg(vece, t, a, b, tcg_gen_shri_vec); +} + +QEMU_FLATTEN +static void gen_vavgs(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_vec b) +{ + do_vavg(vece, t, a, b, tcg_gen_sari_vec); +} + +static bool do_vx_vavg(DisasContext *ctx, arg_VX *a, int sign, int vece) +{ + static const TCGOpcode vecop_list_s[] =3D { + INDEX_op_add_vec, INDEX_op_sari_vec, 0 + }; + static const TCGOpcode vecop_list_u[] =3D { + INDEX_op_add_vec, INDEX_op_shri_vec, 0 + }; + + static const GVecGen3 op[2][3] =3D { + { + { + .fniv =3D gen_vavgu, + .fno =3D gen_helper_VAVGUB, + .opt_opc =3D vecop_list_u, + .vece =3D MO_8 + }, + { + .fniv =3D gen_vavgu, + .fno =3D gen_helper_VAVGUH, + .opt_opc =3D vecop_list_u, + .vece =3D MO_16 + }, + { + .fniv =3D gen_vavgu, + .fno =3D gen_helper_VAVGUW, + .opt_opc =3D vecop_list_u, + .vece =3D MO_32 + }, + }, + { + { + .fniv =3D gen_vavgs, + .fno =3D gen_helper_VAVGSB, + .opt_opc =3D vecop_list_s, + .vece =3D MO_8 + }, + { + .fniv =3D gen_vavgs, + .fno =3D gen_helper_VAVGSH, + .opt_opc =3D vecop_list_s, + .vece =3D MO_16 + }, + { + .fniv =3D gen_vavgs, + .fno =3D gen_helper_VAVGSW, + .opt_opc =3D vecop_list_s, + .vece =3D MO_32 + }, + }, + }; + + REQUIRE_VECTOR(ctx); + + tcg_gen_gvec_3(avr_full_offset(a->vrt), avr_full_offset(a->vra), + avr_full_offset(a->vrb), 16, 16, &op[sign][vece]); + + + return true; +} + + +TRANS_FLAGS(ALTIVEC, VAVGSB, do_vx_vavg, 1, MO_8) +TRANS_FLAGS(ALTIVEC, VAVGSH, do_vx_vavg, 1, MO_16) +TRANS_FLAGS(ALTIVEC, VAVGSW, do_vx_vavg, 1, MO_32) +TRANS_FLAGS(ALTIVEC, VAVGUB, do_vx_vavg, 0, MO_8) +TRANS_FLAGS(ALTIVEC, VAVGUH, do_vx_vavg, 0, MO_16) +TRANS_FLAGS(ALTIVEC, VAVGUW, do_vx_vavg, 0, MO_32) + static bool do_vdiv_vmod(DisasContext *ctx, arg_VX *a, const int vece, void (*func_32)(TCGv_i32 t, TCGv_i32 a, TCGv_i32 = b), void (*func_64)(TCGv_i64 t, TCGv_i64 a, TCGv_i64 = b)) diff --git a/target/ppc/translate/vmx-ops.c.inc b/target/ppc/translate/vmx-= ops.c.inc index 46a620a232..02db51def0 100644 --- a/target/ppc/translate/vmx-ops.c.inc +++ b/target/ppc/translate/vmx-ops.c.inc @@ -83,12 +83,9 @@ GEN_VXFORM(vminsb, 1, 12), GEN_VXFORM(vminsh, 1, 13), GEN_VXFORM(vminsw, 1, 14), GEN_VXFORM_207(vminsd, 1, 15), -GEN_VXFORM_DUAL(vavgub, vabsdub, 1, 16, PPC_ALTIVEC, PPC_NONE), -GEN_VXFORM_DUAL(vavguh, vabsduh, 1, 17, PPC_ALTIVEC, PPC_NONE), -GEN_VXFORM_DUAL(vavguw, vabsduw, 1, 18, PPC_ALTIVEC, PPC_NONE), -GEN_VXFORM(vavgsb, 1, 20), -GEN_VXFORM(vavgsh, 1, 21), -GEN_VXFORM(vavgsw, 1, 22), +GEN_VXFORM(vabsdub, 1, 16), +GEN_VXFORM(vabsduh, 1, 17), +GEN_VXFORM(vabsduw, 1, 18), GEN_VXFORM(vmrghb, 6, 0), GEN_VXFORM(vmrghh, 6, 1), GEN_VXFORM(vmrghw, 6, 2), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975360; cv=none; d=zohomail.com; s=zohoarc; b=RNfj5UiHQYu6FERWJWXIdauD4QvmD+fQhcmmaqp/98S9zEphd8z1yVjSBQbSiRNI/WJG9HGW2qo5QNmsoEtg9+MdpMbpYtIdcn1Cfesc/ArxwC2A2UEtZeLClwwVJSjDUwIdqi2dywvPVqLuRHIMlwth4AAS1XTLbeRofRnLAhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975360; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=RMjH+G0/SelU4bCAfTRqsl1NutDAFBMqnLNNpG1cLes=; b=De3BgXyI3yv4OFu7rbdI9cRJYg//g1MWxP5TrHjDJTlNT4QbJwPK+opB3u2Ey0mhZ0NeXcmTOfQxw1be7L5MPYXcRhYp4Zcoa/aH42EQcgqd+xy83flYe7g6+qNmXZsn/MHGNsGQJQgzY5JiPnV60X+Wy5olZ6I76Vi2qj7CbYo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975360488402.1695867284204; Fri, 28 Oct 2022 09:42:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQT-0004Wy-Gt; Fri, 28 Oct 2022 12:41:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPs-0008Dj-5W; Fri, 28 Oct 2022 12:41:13 -0400 Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPk-000886-Ey; Fri, 28 Oct 2022 12:41:03 -0400 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-13be3ef361dso6842499fac.12; Fri, 28 Oct 2022 09:40:58 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:40:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RMjH+G0/SelU4bCAfTRqsl1NutDAFBMqnLNNpG1cLes=; b=ZNHymBTuQCiUo//DEw9z1VSXhgOsqHRniLAgakvcnxd1z7KvOfgqCJ10KKEJqeEwf3 ApK70r7L4ZscziEn1LgOBRSWt9n2m7+DB3bEbVN62Zg6zLGN8roVtQgzblkyDOrufaJ7 H1Y8JVb+S6X5OVyW0OzextHFvksQa8ww19SixL8NCBRLt1EEXyYtOS0RHeqoeqGhK9E2 vZSpoQBjyjT4exQuRa4nf0BIdtSDgUasizcwFaEFkSBFLD/lxf5PW+P8bR+TgpUe74jV hN+LhWk0c8dlfKrZX9vqMGy1eOEeBhcn4xaiHOK709qiMokEcimO/lNOzA9v5LktrDGG cGVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RMjH+G0/SelU4bCAfTRqsl1NutDAFBMqnLNNpG1cLes=; b=jKNt0QZVrQe4xsf3dl3BZZjCXStPmTY5GxDVFa6AT+RrWBHUVnRCx5qvzs7b4ujhHC xZY57MOHnUUfMqaC88cq7UXz/593J5VN+cLTzCdbOscgG93489nmhxfkqRTfyigF+1Nl ZQPN+wYCEAklHrA7FmBKGwoWNzNwfDAnZTde8YqULBI9QYpxldIvZWPHBdYs6VCj8pan 4Pr94c3mgNttC6LsBTVUj0B7kV6uUSkGd/qWIk0B0BH7IcoNtfj8kZoRENt8k1BJprGm qpGunDAVjW7bQpXX0yoNBaTE3rRPB2nt5hLs1wwi3Q5TIJdK0YowkZBpa3SF8gPBRrPi lKwg== X-Gm-Message-State: ACrzQf0/dEglangk8a/8rMnr9f/wCCA95bMfMrWCZHdsu5/r2PnMGkwQ YK9hkLdqFunq44uYgiQoHphOzWDohEibrQ== X-Google-Smtp-Source: AMsMyM4lmSYu7DKepO9pQG/fhdEJVAe82IY//nhpxqZWXPSw2zJSRCH5jVAhG6yTPDmA9unntW4Irg== X-Received: by 2002:a05:6870:960d:b0:13b:254d:247e with SMTP id d13-20020a056870960d00b0013b254d247emr9872785oaq.237.1666975256954; Fri, 28 Oct 2022 09:40:56 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 13/62] target/ppc: Move VABSDU[BHW] to decodetree and use gvec Date: Fri, 28 Oct 2022 13:39:02 -0300 Message-Id: <20221028163951.810456-14-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2f; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975361125100003 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Moved VABSDUB, VABSDUH and VABSDUW to decodetree and use gvec to translate them. vabsdub: rept loop master patch 8 12500 0,03601600 0,00688500 (-80.9%) 25 4000 0,03651000 0,00532100 (-85.4%) 100 1000 0,03666900 0,00595300 (-83.8%) 500 200 0,04305800 0,01244600 (-71.1%) 2500 40 0,06893300 0,04273700 (-38.0%) 8000 12 0,14633200 0,12660300 (-13.5%) vabsduh: rept loop master patch 8 12500 0,02172400 0,00687500 (-68.4%) 25 4000 0,02154100 0,00531500 (-75.3%) 100 1000 0,02235400 0,00596300 (-73.3%) 500 200 0,02827500 0,01245100 (-56.0%) 2500 40 0,05638400 0,04285500 (-24.0%) 8000 12 0,13166000 0,12641400 (-4.0%) vabsduw: rept loop master patch 8 12500 0,01646400 0,00688300 (-58.2%) 25 4000 0,01454500 0,00475500 (-67.3%) 100 1000 0,01545800 0,00511800 (-66.9%) 500 200 0,02168200 0,01114300 (-48.6%) 2500 40 0,04571300 0,04138800 (-9.5%) 8000 12 0,12209500 0,12178500 (-0.3%) Same as VADDCUW and VSUBCUW, overall performance gain but it uses more TCGop (4 before the patch, 6 after). Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-8-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/helper.h | 6 ++-- target/ppc/insn32.decode | 6 ++++ target/ppc/int_helper.c | 13 +++----- target/ppc/translate/vmx-impl.c.inc | 49 +++++++++++++++++++++++++++-- target/ppc/translate/vmx-ops.c.inc | 3 -- 5 files changed, 60 insertions(+), 17 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 71c22efc2e..fd8280dfa7 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -146,9 +146,9 @@ DEF_HELPER_FLAGS_1(ftsqrt, TCG_CALL_NO_RWG_SE, i32, i64) DEF_HELPER_FLAGS_4(VAVGUB, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) DEF_HELPER_FLAGS_4(VAVGUH, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) DEF_HELPER_FLAGS_4(VAVGUW, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) -DEF_HELPER_FLAGS_3(vabsdub, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_3(vabsduh, TCG_CALL_NO_RWG, void, avr, avr, avr) -DEF_HELPER_FLAGS_3(vabsduw, TCG_CALL_NO_RWG, void, avr, avr, avr) +DEF_HELPER_FLAGS_4(VABSDUB, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) +DEF_HELPER_FLAGS_4(VABSDUH, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) +DEF_HELPER_FLAGS_4(VABSDUW, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) DEF_HELPER_FLAGS_4(VAVGSB, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) DEF_HELPER_FLAGS_4(VAVGSH, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) DEF_HELPER_FLAGS_4(VAVGSW, TCG_CALL_NO_RWG, void, avr, avr, avr, i32) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 53dd45bbab..1214af7394 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -528,6 +528,12 @@ VAVGUB 000100 ..... ..... ..... 10000000010 = @VX VAVGUH 000100 ..... ..... ..... 10001000010 @VX VAVGUW 000100 ..... ..... ..... 10010000010 @VX =20 +## Vector Integer Absolute Difference Instructions + +VABSDUB 000100 ..... ..... ..... 10000000011 @VX +VABSDUH 000100 ..... ..... ..... 10001000011 @VX +VABSDUW 000100 ..... ..... ..... 10010000011 @VX + ## Vector Bit Manipulation Instruction =20 VGNB 000100 ..... -- ... ..... 10011001100 @VX_n diff --git a/target/ppc/int_helper.c b/target/ppc/int_helper.c index bda76e54d4..d97a7f1f28 100644 --- a/target/ppc/int_helper.c +++ b/target/ppc/int_helper.c @@ -589,8 +589,8 @@ VAVG(VAVGSW, s32, int64_t) VAVG(VAVGUW, u32, uint64_t) #undef VAVG =20 -#define VABSDU_DO(name, element) \ -void helper_v##name(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b) \ +#define VABSDU(name, element) \ +void helper_##name(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b, uint32_t v)\ { \ int i; \ \ @@ -606,12 +606,9 @@ void helper_v##name(ppc_avr_t *r, ppc_avr_t *a, ppc_av= r_t *b) \ * name - instruction mnemonic suffix (b: byte, h: halfword, w: word) * element - element type to access from vector */ -#define VABSDU(type, element) \ - VABSDU_DO(absdu##type, element) -VABSDU(b, u8) -VABSDU(h, u16) -VABSDU(w, u32) -#undef VABSDU_DO +VABSDU(VABSDUB, u8) +VABSDU(VABSDUH, u16) +VABSDU(VABSDUW, u32) #undef VABSDU =20 #define VCF(suffix, cvt, element) \ diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx= -impl.c.inc index 195c601f7a..7741f2eb49 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -431,9 +431,6 @@ GEN_VXFORM_V(vminsb, MO_8, tcg_gen_gvec_smin, 1, 12); GEN_VXFORM_V(vminsh, MO_16, tcg_gen_gvec_smin, 1, 13); GEN_VXFORM_V(vminsw, MO_32, tcg_gen_gvec_smin, 1, 14); GEN_VXFORM_V(vminsd, MO_64, tcg_gen_gvec_smin, 1, 15); -GEN_VXFORM(vabsdub, 1, 16); -GEN_VXFORM(vabsduh, 1, 17); -GEN_VXFORM(vabsduw, 1, 18); GEN_VXFORM(vmrghb, 6, 0); GEN_VXFORM(vmrghh, 6, 1); GEN_VXFORM(vmrghw, 6, 2); @@ -3455,6 +3452,52 @@ TRANS_FLAGS(ALTIVEC, VAVGUB, do_vx_vavg, 0, MO_8) TRANS_FLAGS(ALTIVEC, VAVGUH, do_vx_vavg, 0, MO_16) TRANS_FLAGS(ALTIVEC, VAVGUW, do_vx_vavg, 0, MO_32) =20 +static void gen_vabsdu(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_vec b) +{ + tcg_gen_umax_vec(vece, t, a, b); + tcg_gen_umin_vec(vece, a, a, b); + tcg_gen_sub_vec(vece, t, t, a); +} + +static bool do_vabsdu(DisasContext *ctx, arg_VX *a, const int vece) +{ + static const TCGOpcode vecop_list[] =3D { + INDEX_op_umax_vec, INDEX_op_umin_vec, INDEX_op_sub_vec, 0 + }; + + static const GVecGen3 op[] =3D { + { + .fniv =3D gen_vabsdu, + .fno =3D gen_helper_VABSDUB, + .opt_opc =3D vecop_list, + .vece =3D MO_8 + }, + { + .fniv =3D gen_vabsdu, + .fno =3D gen_helper_VABSDUH, + .opt_opc =3D vecop_list, + .vece =3D MO_16 + }, + { + .fniv =3D gen_vabsdu, + .fno =3D gen_helper_VABSDUW, + .opt_opc =3D vecop_list, + .vece =3D MO_32 + }, + }; + + REQUIRE_VECTOR(ctx); + + tcg_gen_gvec_3(avr_full_offset(a->vrt), avr_full_offset(a->vra), + avr_full_offset(a->vrb), 16, 16, &op[vece]); + + return true; +} + +TRANS_FLAGS2(ISA300, VABSDUB, do_vabsdu, MO_8) +TRANS_FLAGS2(ISA300, VABSDUH, do_vabsdu, MO_16) +TRANS_FLAGS2(ISA300, VABSDUW, do_vabsdu, MO_32) + static bool do_vdiv_vmod(DisasContext *ctx, arg_VX *a, const int vece, void (*func_32)(TCGv_i32 t, TCGv_i32 a, TCGv_i32 = b), void (*func_64)(TCGv_i64 t, TCGv_i64 a, TCGv_i64 = b)) diff --git a/target/ppc/translate/vmx-ops.c.inc b/target/ppc/translate/vmx-= ops.c.inc index 02db51def0..33fec8aca4 100644 --- a/target/ppc/translate/vmx-ops.c.inc +++ b/target/ppc/translate/vmx-ops.c.inc @@ -83,9 +83,6 @@ GEN_VXFORM(vminsb, 1, 12), GEN_VXFORM(vminsh, 1, 13), GEN_VXFORM(vminsw, 1, 14), GEN_VXFORM_207(vminsd, 1, 15), -GEN_VXFORM(vabsdub, 1, 16), -GEN_VXFORM(vabsduh, 1, 17), -GEN_VXFORM(vabsduw, 1, 18), GEN_VXFORM(vmrghb, 6, 0), GEN_VXFORM(vmrghh, 6, 1), GEN_VXFORM(vmrghw, 6, 2), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975388; cv=none; d=zohomail.com; s=zohoarc; b=ZWNqvHJfbn01KRD3uM9vpn6RY/ISUdnT+up3oG3x0lSFGMbUO6kWlCY9NjSGXrZ/z5d3uzOonrmG35nUoW8Ptr15V0u9a8gvVLjHDUaHP0WnL4WiFHozqm3klwF7hTyR9mjxlGsU0KLZYD5i8Dnptq3i/UwjZWinfUoXLw0A694= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975388; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XHcNg0pGqBApqz++yl6LQvL/UqWNCisiJahvXPH3NLs=; b=dVR2WxkUCeHZcmQxtND2R/uTYxf1lNjIMmKq5jd+KLAUi3IlbmLb+WhEK06QGsN5vEAqtnw+dhgh7qIizDfJe4TqW3FUkx7ewbExxkhrSYfWjskvbfYjjNfbWbYvcLHbtZANZ9G2POXWOX6d3aY1fAbeYawtggB3YWM09NSm6v0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975388858177.14916334452596; Fri, 28 Oct 2022 09:43:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQw-0000E5-Cl; Fri, 28 Oct 2022 12:42:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPy-0000Vv-Vm; Fri, 28 Oct 2022 12:41:23 -0400 Received: from mail-ot1-x333.google.com ([2607:f8b0:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPr-0008DS-0U; Fri, 28 Oct 2022 12:41:12 -0400 Received: by mail-ot1-x333.google.com with SMTP id cy15-20020a056830698f00b0065c530585afso3277645otb.2; Fri, 28 Oct 2022 09:41:04 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.40.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XHcNg0pGqBApqz++yl6LQvL/UqWNCisiJahvXPH3NLs=; b=EALs91km60o9N2oMIchg9tK/eHHc0koHWR4XsGSPYGG6fh4Lb+HAj505Jhq/eH6Vsm Syu4AAI5wjJg67xEjYbe/NgjC5EnejNlHl3rzHf/uvDzpuocOGP6Sas/T/d3/j/riErF UKK9cReeFtD+lJ0iybiJlyZ3JZVmH+EcWY0EfMvqsnDD9u5SxRaE4QvwGnNuGpJezMds wGFmb/48CPuLGHEJLF/ofh9+id3/KCeWF3tNXlTmIpq9+Qd6N1ir+dQBPQYzkiFpDzJL s7cdIxSJp03KSUbyaYu2pf9ZvCmuXDOZ+b8fV4tT6kTZ5hhzqLrlAFj2ufVgxOhH2L8t CYmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XHcNg0pGqBApqz++yl6LQvL/UqWNCisiJahvXPH3NLs=; b=WLfiqiD+1GYyla5hgKqZDbPgOPtq5IOSV5SRhLk1IgBZw+cwWzxM5y+du0JP5pH1K7 04kUvjPcrMQ0mnsXo3K74M5YYIPhgEFIeUWhME0ODRfg7v3bX3iHpTh6IGde+txyNDJX JCnnhpR4Dlp27yCEdtBadb82ilFezHR0Xq8wwsbqrqdAhugf6Z6S82J5AUi9chFZqqgy EToZg3S5hs8d/Eteh6l9RohZiO4hgzu+pipu06+bESsOentRazf1UJ3xBxLmy4La9zVn fsoDysfpH5/ft+SWRYRfMqprmm7rTIgDxmt2InLdMs2FJndOjAKvWe16EurPZQx1ZPbN I8TQ== X-Gm-Message-State: ACrzQf3OK8EbPiy5Tjn6HJNr9C9KnJ3EpozUkchDOoRofbk2kYBH/8Sw nypoVhsqiXAcxurQD6DmHDxcxZvyKC6pWA== X-Google-Smtp-Source: AMsMyM70vY7lMgHsQ0LCSzCch2ONPIu3wf+ud7RvGnugShVEkCBDmMJB4fpc/vaz5rpbQbE/zC9A8A== X-Received: by 2002:a9d:3642:0:b0:655:f25f:be55 with SMTP id w60-20020a9d3642000000b00655f25fbe55mr112026otb.13.1666975263600; Fri, 28 Oct 2022 09:41:03 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 14/62] target/ppc: Use gvec to decode XV[N]ABS[DS]P/XVNEG[DS]P Date: Fri, 28 Oct 2022 13:39:03 -0300 Message-Id: <20221028163951.810456-15-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::333; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x333.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975389508100007 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Moved XVABSSP, XVABSDP, XVNABSSP,XVNABSDP, XVNEGSP and XVNEGDP to decodetree and used gvec to translate them. xvabssp: rept loop master patch 8 12500 0,00477900 0,00476000 (-0.4%) 25 4000 0,00442800 0,00353300 (-20.2%) 100 1000 0,00478700 0,00366100 (-23.5%) 500 200 0,00973200 0,00649400 (-33.3%) 2500 40 0,03165200 0,02226700 (-29.7%) 8000 12 0,09315900 0,06674900 (-28.3%) xvabsdp: rept loop master patch 8 12500 0,00475000 0,00474400 (-0.1%) 25 4000 0,00355600 0,00367500 (+3.3%) 100 1000 0,00444200 0,00366000 (-17.6%) 500 200 0,00942700 0,00732400 (-22.3%) 2500 40 0,02990000 0,02308500 (-22.8%) 8000 12 0,08770300 0,06683800 (-23.8%) xvnabssp: rept loop master patch 8 12500 0,00494500 0,00492900 (-0.3%) 25 4000 0,00397700 0,00338600 (-14.9%) 100 1000 0,00421400 0,00353500 (-16.1%) 500 200 0,01048000 0,00707100 (-32.5%) 2500 40 0,03251500 0,02238300 (-31.2%) 8000 12 0,08889100 0,06469800 (-27.2%) xvnabsdp: rept loop master patch 8 12500 0,00511000 0,00492700 (-3.6%) 25 4000 0,00398800 0,00381500 (-4.3%) 100 1000 0,00390500 0,00365900 (-6.3%) 500 200 0,00924800 0,00784600 (-15.2%) 2500 40 0,03138900 0,02391600 (-23.8%) 8000 12 0,09654200 0,05684600 (-41.1%) xvnegsp: rept loop master patch 8 12500 0,00493900 0,00452800 (-8.3%) 25 4000 0,00369100 0,00366800 (-0.6%) 100 1000 0,00371100 0,00380000 (+2.4%) 500 200 0,00991100 0,00652300 (-34.2%) 2500 40 0,03025800 0,02422300 (-19.9%) 8000 12 0,09251100 0,06457600 (-30.2%) xvnegdp: rept loop master patch 8 12500 0,00474900 0,00454400 (-4.3%) 25 4000 0,00353100 0,00325600 (-7.8%) 100 1000 0,00398600 0,00366800 (-8.0%) 500 200 0,01032300 0,00702400 (-32.0%) 2500 40 0,03125000 0,02422400 (-22.5%) 8000 12 0,09475100 0,06173000 (-34.9%) This one to me seemed the opposite of the previous instructions, as it looks like there was an improvement in the translation time (itself not a surprise as operations were done twice before so there was the need to translate twice as many TCGop) Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-9-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/insn32.decode | 9 ++++ target/ppc/translate/vsx-impl.c.inc | 73 ++++++++++++++++++++++++++--- target/ppc/translate/vsx-ops.c.inc | 6 --- 3 files changed, 76 insertions(+), 12 deletions(-) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 1214af7394..395339ce40 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -754,6 +754,15 @@ STXVRHX 011111 ..... ..... ..... 0010101101 . = @X_TSX STXVRWX 011111 ..... ..... ..... 0011001101 . @X_TSX STXVRDX 011111 ..... ..... ..... 0011101101 . @X_TSX =20 +## VSX Vector Binary Floating-Point Sign Manipulation Instructions + +XVABSDP 111100 ..... 00000 ..... 111011001 .. @XX2 +XVABSSP 111100 ..... 00000 ..... 110011001 .. @XX2 +XVNABSDP 111100 ..... 00000 ..... 111101001 .. @XX2 +XVNABSSP 111100 ..... 00000 ..... 110101001 .. @XX2 +XVNEGDP 111100 ..... 00000 ..... 111111001 .. @XX2 +XVNEGSP 111100 ..... 00000 ..... 110111001 .. @XX2 + ## VSX Scalar Multiply-Add Instructions =20 XSMADDADP 111100 ..... ..... ..... 00100001 . . . @XX3 diff --git a/target/ppc/translate/vsx-impl.c.inc b/target/ppc/translate/vsx= -impl.c.inc index e6e5c45ffd..8717e20d08 100644 --- a/target/ppc/translate/vsx-impl.c.inc +++ b/target/ppc/translate/vsx-impl.c.inc @@ -782,15 +782,76 @@ static void glue(gen_, name)(DisasContext *ctx) = \ tcg_temp_free_i64(sgm); \ } =20 -VSX_VECTOR_MOVE(xvabsdp, OP_ABS, SGN_MASK_DP) -VSX_VECTOR_MOVE(xvnabsdp, OP_NABS, SGN_MASK_DP) -VSX_VECTOR_MOVE(xvnegdp, OP_NEG, SGN_MASK_DP) VSX_VECTOR_MOVE(xvcpsgndp, OP_CPSGN, SGN_MASK_DP) -VSX_VECTOR_MOVE(xvabssp, OP_ABS, SGN_MASK_SP) -VSX_VECTOR_MOVE(xvnabssp, OP_NABS, SGN_MASK_SP) -VSX_VECTOR_MOVE(xvnegsp, OP_NEG, SGN_MASK_SP) VSX_VECTOR_MOVE(xvcpsgnsp, OP_CPSGN, SGN_MASK_SP) =20 +#define TCG_OP_IMM_i64(FUNC, OP, IMM) \ + static void FUNC(TCGv_i64 t, TCGv_i64 b) \ + { \ + OP(t, b, IMM); \ + } + +TCG_OP_IMM_i64(do_xvabssp_i64, tcg_gen_andi_i64, ~SGN_MASK_SP) +TCG_OP_IMM_i64(do_xvnabssp_i64, tcg_gen_ori_i64, SGN_MASK_SP) +TCG_OP_IMM_i64(do_xvnegsp_i64, tcg_gen_xori_i64, SGN_MASK_SP) +TCG_OP_IMM_i64(do_xvabsdp_i64, tcg_gen_andi_i64, ~SGN_MASK_DP) +TCG_OP_IMM_i64(do_xvnabsdp_i64, tcg_gen_ori_i64, SGN_MASK_DP) +TCG_OP_IMM_i64(do_xvnegdp_i64, tcg_gen_xori_i64, SGN_MASK_DP) +#undef TCG_OP_IMM_i64 + +static void xv_msb_op1(unsigned vece, TCGv_vec t, TCGv_vec b, + void (*tcg_gen_op_vec)(unsigned, TCGv_vec, TCGv_vec, TCGv= _vec)) +{ + uint64_t msb =3D (vece =3D=3D MO_32) ? SGN_MASK_SP : SGN_MASK_DP; + tcg_gen_op_vec(vece, t, b, tcg_constant_vec_matching(t, vece, msb)); +} + +static void do_xvabs_vec(unsigned vece, TCGv_vec t, TCGv_vec b) +{ + xv_msb_op1(vece, t, b, tcg_gen_andc_vec); +} + +static void do_xvnabs_vec(unsigned vece, TCGv_vec t, TCGv_vec b) +{ + xv_msb_op1(vece, t, b, tcg_gen_or_vec); +} + +static void do_xvneg_vec(unsigned vece, TCGv_vec t, TCGv_vec b) +{ + xv_msb_op1(vece, t, b, tcg_gen_xor_vec); +} + +static bool do_vsx_msb_op(DisasContext *ctx, arg_XX2 *a, unsigned vece, + void (*vec)(unsigned, TCGv_vec, TCGv_vec), + void (*i64)(TCGv_i64, TCGv_i64)) +{ + static const TCGOpcode vecop_list[] =3D { + 0 + }; + + const GVecGen2 op =3D { + .fni8 =3D i64, + .fniv =3D vec, + .opt_opc =3D vecop_list, + .vece =3D vece + }; + + REQUIRE_INSNS_FLAGS2(ctx, VSX); + REQUIRE_VSX(ctx); + + tcg_gen_gvec_2(vsr_full_offset(a->xt), vsr_full_offset(a->xb), + 16, 16, &op); + + return true; +} + +TRANS(XVABSDP, do_vsx_msb_op, MO_64, do_xvabs_vec, do_xvabsdp_i64) +TRANS(XVNABSDP, do_vsx_msb_op, MO_64, do_xvnabs_vec, do_xvnabsdp_i64) +TRANS(XVNEGDP, do_vsx_msb_op, MO_64, do_xvneg_vec, do_xvnegdp_i64) +TRANS(XVABSSP, do_vsx_msb_op, MO_32, do_xvabs_vec, do_xvabssp_i64) +TRANS(XVNABSSP, do_vsx_msb_op, MO_32, do_xvnabs_vec, do_xvnabssp_i64) +TRANS(XVNEGSP, do_vsx_msb_op, MO_32, do_xvneg_vec, do_xvnegsp_i64) + #define VSX_CMP(name, op1, op2, inval, type) = \ static void gen_##name(DisasContext *ctx) = \ { = \ diff --git a/target/ppc/translate/vsx-ops.c.inc b/target/ppc/translate/vsx-= ops.c.inc index bff14bbece..b77324e0a8 100644 --- a/target/ppc/translate/vsx-ops.c.inc +++ b/target/ppc/translate/vsx-ops.c.inc @@ -165,13 +165,7 @@ GEN_XX3FORM(name, opc2, opc3 | 1, fl2) GEN_XX2FORM_DCMX(xvtstdcdp, 0x14, 0x1E, PPC2_ISA300), GEN_XX2FORM_DCMX(xvtstdcsp, 0x14, 0x1A, PPC2_ISA300), =20 -GEN_XX2FORM(xvabsdp, 0x12, 0x1D, PPC2_VSX), -GEN_XX2FORM(xvnabsdp, 0x12, 0x1E, PPC2_VSX), -GEN_XX2FORM(xvnegdp, 0x12, 0x1F, PPC2_VSX), GEN_XX3FORM(xvcpsgndp, 0x00, 0x1E, PPC2_VSX), -GEN_XX2FORM(xvabssp, 0x12, 0x19, PPC2_VSX), -GEN_XX2FORM(xvnabssp, 0x12, 0x1A, PPC2_VSX), -GEN_XX2FORM(xvnegsp, 0x12, 0x1B, PPC2_VSX), GEN_XX3FORM(xvcpsgnsp, 0x00, 0x1A, PPC2_VSX), =20 GEN_XX3FORM(xsadddp, 0x00, 0x04, PPC2_VSX), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975366; cv=none; d=zohomail.com; s=zohoarc; b=lQfu9NMTOvtfVTR9XxjKOvH2N1UO7DcOusy4djfi3WKkrKWSVDKv3z0bo9p2iotURdaX01sENsFKo4L81BudeufCHHdKRyVA9XV2K7FCzlUsZqPwX+Dip6Go66yXAHHEnnF3Fpm9jG4haxK4SQv6NpGt4lu5sRmCiKQoD+uP2C4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975366; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Ppqz18mS5Svpmzs6DzgrMpVIEnsIWsMRP9qc7J5r1Vg=; b=lvPWG+kPwg8QKGlaYxUdaHMQF/oARYLtt0mzDC3ZNprr8+mdFFvjm77N/2oPAAuGo/pyVdDtuHU1iy7xmTC1QNgFJqmVgNxhNC9l6qA+FLOduBEfXpXFe1g2cqHgP8sjYveXOBv/04bFStnWO18k/YuhbfqJoB/BN5TkGSmZld0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975366060384.0290426984543; Fri, 28 Oct 2022 09:42:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQg-00061F-Q8; Fri, 28 Oct 2022 12:41:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSPy-0000Vz-WC; Fri, 28 Oct 2022 12:41:23 -0400 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPv-0008Es-Pw; Fri, 28 Oct 2022 12:41:14 -0400 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-13ae8117023so6858830fac.9; Fri, 28 Oct 2022 09:41:09 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ppqz18mS5Svpmzs6DzgrMpVIEnsIWsMRP9qc7J5r1Vg=; b=ZcXKZRvC8Q/xNxQZQ+R0OP3+h83ZqD+Gps8y+5ExnAy0ZZi9n0t1mHAm2VZiCcCayB LZKRy8Y/2fpG+s3HN9ntsPnSZxmEjEZG8zWzKVGLiUtloc9hGIiTq1jNL1g6PLe4Q/UG m1S8BpJyVkCrSzlzehivZy6KnrHCG+OOLkBRMPSNHvvYadYvguiXmKrgUoDj86MR5NyW WS0IpwLvJ/BIN5bZJkeyMkDIoIxqIfE9I4Khh0eQbxTsgIc+Fm2BHXK3h5HigX+aV0iH oW0HzbuzzPjOGRqaS037nJpXWya1iS41y5EvTYfjC04tRV4JTGAQ7SBLMTjv1y4fsoLW /BzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ppqz18mS5Svpmzs6DzgrMpVIEnsIWsMRP9qc7J5r1Vg=; b=p0+UqizAjgRFEMGjl8Wsm36Bl8jbg4YIC46WZ6AHaq+yB9ZddUb3xMUQa2Sci2Nzfd m92LtH8twzvCChtWsCd/TsHa15WnMVAx1rY/j7DmNQJHC5S5+rIna+M/AcFS7ngDmMqR A4PjyJnG8+O1IIozgEchCXA1Axd8P/pJEJsA9JkSdZT7abNRCqwL2Snv5+qtKQkGWYv7 Nw3J0s44YNN1qiJ4vcYgld4URYcLdRde3ByUOSyoAgQY9JYgxV77FGIK9VX+Bm1bifaL h5PoUuLbptVk9kHH1EZqTWCnD013OfFTYOwbnZNeMPpn2T3pLWOb0J+F+1J8WHxtSyeY T0pg== X-Gm-Message-State: ACrzQf0+6MalZZixgpUJLMkQ70M6ytJY97jINRNACT1vLdcaLsO1VncH kQZl7We3txDTLmkzjfIRAEYWDipdcKdqMA== X-Google-Smtp-Source: AMsMyM4z2RfhsFkr0iIcojtRD3JwxnpA+AbjrAcbf/Yiro9Y8I9RHzC/We7zBYRGYaR2vrsMzDKCXQ== X-Received: by 2002:a05:6870:818c:b0:13b:8a11:82ed with SMTP id k12-20020a056870818c00b0013b8a1182edmr9767652oae.8.1666975268720; Fri, 28 Oct 2022 09:41:08 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 15/62] target/ppc: Use gvec to decode XVCPSGN[SD]P Date: Fri, 28 Oct 2022 13:39:04 -0300 Message-Id: <20221028163951.810456-16-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::29; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x29.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975368355100003 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Moved XVCPSGNSP and XVCPSGNDP to decodetree and used gvec to translate them. xvcpsgnsp: rept loop master patch 8 12500 0,00561400 0,00537900 (-4.2%) 25 4000 0,00562100 0,00400000 (-28.8%) 100 1000 0,00696900 0,00416300 (-40.3%) 500 200 0,02211900 0,00840700 (-62.0%) 2500 40 0,09328600 0,02728300 (-70.8%) 8000 12 0,27295300 0,06867800 (-74.8%) xvcpsgndp: rept loop master patch 8 12500 0,00556300 0,00584200 (+5.0%) 25 4000 0,00482700 0,00431700 (-10.6%) 100 1000 0,00585800 0,00464400 (-20.7%) 500 200 0,01565300 0,00839700 (-46.4%) 2500 40 0,05766500 0,02430600 (-57.8%) 8000 12 0,19875300 0,07947100 (-60.0%) Like the previous instructions there seemed to be a improvement on translation time. Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-10-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/insn32.decode | 2 + target/ppc/translate/vsx-impl.c.inc | 109 ++++++++++++++-------------- target/ppc/translate/vsx-ops.c.inc | 3 - 3 files changed, 55 insertions(+), 59 deletions(-) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 395339ce40..3594c0c960 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -762,6 +762,8 @@ XVNABSDP 111100 ..... 00000 ..... 111101001 .. = @XX2 XVNABSSP 111100 ..... 00000 ..... 110101001 .. @XX2 XVNEGDP 111100 ..... 00000 ..... 111111001 .. @XX2 XVNEGSP 111100 ..... 00000 ..... 110111001 .. @XX2 +XVCPSGNDP 111100 ..... ..... ..... 11110000 ... @XX3 +XVCPSGNSP 111100 ..... ..... ..... 11010000 ... @XX3 =20 ## VSX Scalar Multiply-Add Instructions =20 diff --git a/target/ppc/translate/vsx-impl.c.inc b/target/ppc/translate/vsx= -impl.c.inc index 8717e20d08..1c289238ec 100644 --- a/target/ppc/translate/vsx-impl.c.inc +++ b/target/ppc/translate/vsx-impl.c.inc @@ -729,62 +729,6 @@ VSX_SCALAR_MOVE_QP(xsnabsqp, OP_NABS, SGN_MASK_DP) VSX_SCALAR_MOVE_QP(xsnegqp, OP_NEG, SGN_MASK_DP) VSX_SCALAR_MOVE_QP(xscpsgnqp, OP_CPSGN, SGN_MASK_DP) =20 -#define VSX_VECTOR_MOVE(name, op, sgn_mask) \ -static void glue(gen_, name)(DisasContext *ctx) \ - { \ - TCGv_i64 xbh, xbl, sgm; \ - if (unlikely(!ctx->vsx_enabled)) { \ - gen_exception(ctx, POWERPC_EXCP_VSXU); \ - return; \ - } \ - xbh =3D tcg_temp_new_i64(); \ - xbl =3D tcg_temp_new_i64(); \ - sgm =3D tcg_temp_new_i64(); \ - get_cpu_vsr(xbh, xB(ctx->opcode), true); \ - get_cpu_vsr(xbl, xB(ctx->opcode), false); \ - tcg_gen_movi_i64(sgm, sgn_mask); \ - switch (op) { \ - case OP_ABS: { \ - tcg_gen_andc_i64(xbh, xbh, sgm); \ - tcg_gen_andc_i64(xbl, xbl, sgm); \ - break; \ - } \ - case OP_NABS: { \ - tcg_gen_or_i64(xbh, xbh, sgm); \ - tcg_gen_or_i64(xbl, xbl, sgm); \ - break; \ - } \ - case OP_NEG: { \ - tcg_gen_xor_i64(xbh, xbh, sgm); \ - tcg_gen_xor_i64(xbl, xbl, sgm); \ - break; \ - } \ - case OP_CPSGN: { \ - TCGv_i64 xah =3D tcg_temp_new_i64(); \ - TCGv_i64 xal =3D tcg_temp_new_i64(); \ - get_cpu_vsr(xah, xA(ctx->opcode), true); \ - get_cpu_vsr(xal, xA(ctx->opcode), false); \ - tcg_gen_and_i64(xah, xah, sgm); \ - tcg_gen_and_i64(xal, xal, sgm); \ - tcg_gen_andc_i64(xbh, xbh, sgm); \ - tcg_gen_andc_i64(xbl, xbl, sgm); \ - tcg_gen_or_i64(xbh, xbh, xah); \ - tcg_gen_or_i64(xbl, xbl, xal); \ - tcg_temp_free_i64(xah); \ - tcg_temp_free_i64(xal); \ - break; \ - } \ - } \ - set_cpu_vsr(xT(ctx->opcode), xbh, true); \ - set_cpu_vsr(xT(ctx->opcode), xbl, false); \ - tcg_temp_free_i64(xbh); \ - tcg_temp_free_i64(xbl); \ - tcg_temp_free_i64(sgm); \ - } - -VSX_VECTOR_MOVE(xvcpsgndp, OP_CPSGN, SGN_MASK_DP) -VSX_VECTOR_MOVE(xvcpsgnsp, OP_CPSGN, SGN_MASK_SP) - #define TCG_OP_IMM_i64(FUNC, OP, IMM) \ static void FUNC(TCGv_i64 t, TCGv_i64 b) \ { \ @@ -852,6 +796,59 @@ TRANS(XVABSSP, do_vsx_msb_op, MO_32, do_xvabs_vec, do_= xvabssp_i64) TRANS(XVNABSSP, do_vsx_msb_op, MO_32, do_xvnabs_vec, do_xvnabssp_i64) TRANS(XVNEGSP, do_vsx_msb_op, MO_32, do_xvneg_vec, do_xvnegsp_i64) =20 +static void do_xvcpsgndp_i64(TCGv_i64 t, TCGv_i64 a, TCGv_i64 b) +{ + tcg_gen_andi_i64(a, a, SGN_MASK_DP); + tcg_gen_andi_i64(b, b, ~SGN_MASK_DP); + tcg_gen_or_i64(t, a, b); +} + +static void do_xvcpsgnsp_i64(TCGv_i64 t, TCGv_i64 a, TCGv_i64 b) +{ + tcg_gen_andi_i64(a, a, SGN_MASK_SP); + tcg_gen_andi_i64(b, b, ~SGN_MASK_SP); + tcg_gen_or_i64(t, a, b); +} + +static void do_xvcpsgn_vec(unsigned vece, TCGv_vec t, TCGv_vec a, TCGv_vec= b) +{ + uint64_t msb =3D (vece =3D=3D MO_32) ? SGN_MASK_SP : SGN_MASK_DP; + tcg_gen_bitsel_vec(vece, t, tcg_constant_vec_matching(t, vece, msb), a= , b); +} + +static bool do_xvcpsgn(DisasContext *ctx, arg_XX3 *a, unsigned vece) +{ + static const TCGOpcode vecop_list[] =3D { + 0 + }; + + static const GVecGen3 op[] =3D { + { + .fni8 =3D do_xvcpsgnsp_i64, + .fniv =3D do_xvcpsgn_vec, + .opt_opc =3D vecop_list, + .vece =3D MO_32 + }, + { + .fni8 =3D do_xvcpsgndp_i64, + .fniv =3D do_xvcpsgn_vec, + .opt_opc =3D vecop_list, + .vece =3D MO_64 + }, + }; + + REQUIRE_INSNS_FLAGS2(ctx, VSX); + REQUIRE_VSX(ctx); + + tcg_gen_gvec_3(vsr_full_offset(a->xt), vsr_full_offset(a->xa), + vsr_full_offset(a->xb), 16, 16, &op[vece - MO_32]); + + return true; +} + +TRANS(XVCPSGNSP, do_xvcpsgn, MO_32) +TRANS(XVCPSGNDP, do_xvcpsgn, MO_64) + #define VSX_CMP(name, op1, op2, inval, type) = \ static void gen_##name(DisasContext *ctx) = \ { = \ diff --git a/target/ppc/translate/vsx-ops.c.inc b/target/ppc/translate/vsx-= ops.c.inc index b77324e0a8..f7d7377379 100644 --- a/target/ppc/translate/vsx-ops.c.inc +++ b/target/ppc/translate/vsx-ops.c.inc @@ -165,9 +165,6 @@ GEN_XX3FORM(name, opc2, opc3 | 1, fl2) GEN_XX2FORM_DCMX(xvtstdcdp, 0x14, 0x1E, PPC2_ISA300), GEN_XX2FORM_DCMX(xvtstdcsp, 0x14, 0x1A, PPC2_ISA300), =20 -GEN_XX3FORM(xvcpsgndp, 0x00, 0x1E, PPC2_VSX), -GEN_XX3FORM(xvcpsgnsp, 0x00, 0x1A, PPC2_VSX), - GEN_XX3FORM(xsadddp, 0x00, 0x04, PPC2_VSX), GEN_VSX_XFORM_300(xsaddqp, 0x04, 0x00, 0x0), GEN_XX3FORM(xssubdp, 0x00, 0x05, PPC2_VSX), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975479; cv=none; d=zohomail.com; s=zohoarc; b=MgL+RNWQvDm94f8ThplhidbSmrEieGQO2MYjaq7030utsX+1oABOMpJ7PzCpSHsf1aHm2c2heg/btqgungChhedC3aI5BmQJ/KwBRuBI261iy0R/5kWFOCTdY4RXBxiCf6NXo6h3lvnUkuaV/4/9jKDdu34JP7WISA4+nAd484w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975479; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HH/Sq/UK3nu/9uVkLtWOzEvGkhN2LKrSwmOX//A+1NM=; b=S7WQRxBHjhzdQ7rB2yLg8ArMYOJm2rVT110Pds4gWWNxpz9I307FcJiesFYKy+f66G2XVqc57ut+/gkWFt/huTLS8Bdn7cdwWHA/YKUUfMOclF9OJQull75sRLAftEnQG9Hg4rJOZFvzLqiZBTXDBJgPpoQ2rGcKfpuDHTeFLNk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975479729154.66212631674262; Fri, 28 Oct 2022 09:44:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQh-0006HG-Ob; Fri, 28 Oct 2022 12:41:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQ4-00014k-GA; Fri, 28 Oct 2022 12:41:23 -0400 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSPz-0008Fy-3i; Fri, 28 Oct 2022 12:41:18 -0400 Received: by mail-oi1-x231.google.com with SMTP id i7so6712559oif.4; Fri, 28 Oct 2022 09:41:13 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HH/Sq/UK3nu/9uVkLtWOzEvGkhN2LKrSwmOX//A+1NM=; b=UvJy2qRip+dWCqhrBucZNbzmWLgOHhNO/GScX/ru/37PsDbJrYPeF0Yw5Qg5SpCjT2 c367hDvhZeriK7coJcv1/opKiOvokicOhUopj2aGz39QifwhDM8h1FpUZJIfqxQmc0zp BtIROFSJ54X/pX9tR6Y2/9A+wqX7txVsJRxsR9Y0xiwsSfuSTY6QIZevVHamH1FaVC6n 38Ee7tYi+bS77FV/HmT8IUfVbHNorJiG1ALSiBVlAt9O+IgWskMf40vsYl5mlcPPT8qZ Q9eY/NGiQX80G8/wHlYO877hdDRgZdRli2bUJ3G99KW07o1RigCF0cM+DD+Ny5OWauye tl1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HH/Sq/UK3nu/9uVkLtWOzEvGkhN2LKrSwmOX//A+1NM=; b=RwL21ZonCtYu+c6397PYBD6aUWY8QOcVj4QozG1oIaNHb59GEI9zPrrR6ivNBSJdC/ aRaslvm97OTw4c1IvVtxfXAs3yKwy1VB6/nJHbRth+TpbABseJm9Zc6JI54u3UUatKyN 3zcmESjyjqXyicyFvcX0n857aTN8eIpR2OhTOY1xKD5uZdoevwz+6dc2p4iLZ2EErTN6 RsUQh+Sq2iBd2d/Rl7vyN1/dCE5W6au2e3EhuEAlQvU0qJcYbyV2267N0LYcS9OXS9aS ZhpsNvIFcQKt7p8dFkQbCYviUyybGXMxtqlYGgVRGkAlsF4eukBx8WF9LjC9iJA4s9oo cSAw== X-Gm-Message-State: ACrzQf1yDI6I2Sx42K7/Cpi40r86TWY10wN8WUS2+Rv+vYM0Bp9M+QQ4 MjRbV09EpJZUnGmgrv5SIUuUr8pYseQDZA== X-Google-Smtp-Source: AMsMyM61M/cpDbu0YAyNhCCjaZquy5PJ9c+FxYxA4swG2jpdZzwQN6lXAZ+hW7pJhsptl1GHukKEfA== X-Received: by 2002:a05:6808:14c1:b0:354:d3bf:67b with SMTP id f1-20020a05680814c100b00354d3bf067bmr8818516oiw.160.1666975272232; Fri, 28 Oct 2022 09:41:12 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 16/62] target/ppc: Moved XVTSTDC[DS]P to decodetree Date: Fri, 28 Oct 2022 13:39:05 -0300 Message-Id: <20221028163951.810456-17-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::231; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x231.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975481858100006 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Moved XVTSTDCSP and XVTSTDCDP to decodetree an restructured the helper to be simpler and do all decoding in the decodetree (so XB, XT and DCMX are all calculated outside the helper). Obs: The tests in this one are slightly different, these are the sum of these instructions with all possible immediate and those instructions are repeated 10 times. xvtstdcsp: rept loop master patch 8 12500 2,76402100 2,70699100 (-2.1%) 25 4000 2,64867100 2,67884100 (+1.1%) 100 1000 2,73806300 2,78701000 (+1.8%) 500 200 3,44666500 3,61027600 (+4.7%) 2500 40 5,85790200 6,47475500 (+10.5%) 8000 12 15,22102100 17,46062900 (+14.7%) xvtstdcdp: rept loop master patch 8 12500 2,11818000 1,61065300 (-24.0%) 25 4000 2,04573400 1,60132200 (-21.7%) 100 1000 2,13834100 1,69988100 (-20.5%) 500 200 2,73977000 2,48631700 (-9.3%) 2500 40 5,05067000 5,25914100 (+4.1%) 8000 12 14,60507800 15,93704900 (+9.1%) Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-11-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/fpu_helper.c | 39 +++++++++++++++++++++++++++-- target/ppc/helper.h | 4 +-- target/ppc/insn32.decode | 5 ++++ target/ppc/translate/vsx-impl.c.inc | 28 +++++++++++++++++++-- target/ppc/translate/vsx-ops.c.inc | 8 ------ 5 files changed, 70 insertions(+), 14 deletions(-) diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c index ae25f32d6e..960a76a8a5 100644 --- a/target/ppc/fpu_helper.c +++ b/target/ppc/fpu_helper.c @@ -3295,11 +3295,46 @@ void helper_##op(CPUPPCState *env, uint32_t opcode)= \ } \ } =20 -VSX_TEST_DC(xvtstdcdp, 2, xB(opcode), float64, VsrD(i), VsrD(i), UINT64_MA= X, 0) -VSX_TEST_DC(xvtstdcsp, 4, xB(opcode), float32, VsrW(i), VsrW(i), UINT32_MA= X, 0) VSX_TEST_DC(xststdcdp, 1, xB(opcode), float64, VsrD(0), VsrD(0), 0, 1) VSX_TEST_DC(xststdcqp, 1, (rB(opcode) + 32), float128, f128, VsrD(0), 0, 1) =20 +#define VSX_TSTDC(tp) \ +static int32_t tp##_tstdc(tp b, uint32_t dcmx) \ +{ \ + uint32_t match =3D 0; \ + uint32_t sign =3D tp##_is_neg(b); \ + if (tp##_is_any_nan(b)) { \ + match =3D extract32(dcmx, 6, 1); \ + } else if (tp##_is_infinity(b)) { \ + match =3D extract32(dcmx, 4 + !sign, 1); \ + } else if (tp##_is_zero(b)) { \ + match =3D extract32(dcmx, 2 + !sign, 1); \ + } else if (tp##_is_zero_or_denormal(b)) { \ + match =3D extract32(dcmx, 0 + !sign, 1); \ + } \ + return (match !=3D 0); \ +} + +VSX_TSTDC(float32) +VSX_TSTDC(float64) +#undef VSX_TSTDC + +void helper_XVTSTDCDP(ppc_vsr_t *t, ppc_vsr_t *b, uint64_t dcmx, uint32_t = v) +{ + int i; + for (i =3D 0; i < 2; i++) { + t->s64[i] =3D (int64_t)-float64_tstdc(b->f64[i], dcmx); + } +} + +void helper_XVTSTDCSP(ppc_vsr_t *t, ppc_vsr_t *b, uint64_t dcmx, uint32_t = v) +{ + int i; + for (i =3D 0; i < 4; i++) { + t->s32[i] =3D (int32_t)-float32_tstdc(b->f32[i], dcmx); + } +} + void helper_xststdcsp(CPUPPCState *env, uint32_t opcode, ppc_vsr_t *xb) { uint32_t dcmx, sign, exp; diff --git a/target/ppc/helper.h b/target/ppc/helper.h index fd8280dfa7..9e5d11939b 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -517,8 +517,8 @@ DEF_HELPER_3(xvcvsxdsp, void, env, vsr, vsr) DEF_HELPER_3(xvcvuxdsp, void, env, vsr, vsr) DEF_HELPER_3(xvcvsxwsp, void, env, vsr, vsr) DEF_HELPER_3(xvcvuxwsp, void, env, vsr, vsr) -DEF_HELPER_2(xvtstdcsp, void, env, i32) -DEF_HELPER_2(xvtstdcdp, void, env, i32) +DEF_HELPER_FLAGS_4(XVTSTDCSP, TCG_CALL_NO_RWG, void, vsr, vsr, i64, i32) +DEF_HELPER_FLAGS_4(XVTSTDCDP, TCG_CALL_NO_RWG, void, vsr, vsr, i64, i32) DEF_HELPER_3(xvrspi, void, env, vsr, vsr) DEF_HELPER_3(xvrspic, void, env, vsr, vsr) DEF_HELPER_3(xvrspim, void, env, vsr, vsr) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 3594c0c960..44905edd29 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -199,6 +199,9 @@ =20 @XX2_uim4 ...... ..... . uim:4 ..... ......... .. &XX2_uim x= t=3D%xx_xt xb=3D%xx_xb =20 +%xx_uim7 6:1 2:1 16:5 +@XX2_uim7 ...... ..... ..... ..... .... . ... . .. &XX2_uim x= t=3D%xx_xt xb=3D%xx_xb uim=3D%xx_uim7 + &XX2_bf_xb bf xb @XX2_bf_xb ...... bf:3 .. ..... ..... ......... . . &XX2_bf_xb= xb=3D%xx_xb =20 @@ -848,6 +851,8 @@ XSCVSPDPN 111100 ..... ----- ..... 101001011 .. = @XX2 ## VSX Binary Floating-Point Math Support Instructions =20 XVXSIGSP 111100 ..... 01001 ..... 111011011 .. @XX2 +XVTSTDCDP 111100 ..... ..... ..... 1111 . 101 ... @XX2_uim7 +XVTSTDCSP 111100 ..... ..... ..... 1101 . 101 ... @XX2_uim7 =20 ## VSX Vector Test Least-Significant Bit by Byte Instruction =20 diff --git a/target/ppc/translate/vsx-impl.c.inc b/target/ppc/translate/vsx= -impl.c.inc index 1c289238ec..287ea8e2ce 100644 --- a/target/ppc/translate/vsx-impl.c.inc +++ b/target/ppc/translate/vsx-impl.c.inc @@ -630,6 +630,8 @@ static void gen_mtvsrws(DisasContext *ctx) #define OP_CPSGN 4 #define SGN_MASK_DP 0x8000000000000000ull #define SGN_MASK_SP 0x8000000080000000ull +#define EXP_MASK_DP 0x7FF0000000000000ull +#define EXP_MASK_SP 0x7F8000007F800000ull =20 #define VSX_SCALAR_MOVE(name, op, sgn_mask) \ static void glue(gen_, name)(DisasContext *ctx) \ @@ -1110,6 +1112,30 @@ GEN_VSX_HELPER_X2(xscvhpdp, 0x16, 0x15, 0x10, PPC2_I= SA300) GEN_VSX_HELPER_R2(xscvsdqp, 0x04, 0x1A, 0x0A, PPC2_ISA300) GEN_VSX_HELPER_X2(xscvspdp, 0x12, 0x14, 0, PPC2_VSX) =20 +static bool do_xvtstdc(DisasContext *ctx, arg_XX2_uim *a, unsigned vece) +{ + static const GVecGen2i op[] =3D { + { + .fnoi =3D gen_helper_XVTSTDCSP, + .vece =3D MO_32 + }, + { + .fnoi =3D gen_helper_XVTSTDCDP, + .vece =3D MO_64 + }, + }; + + REQUIRE_VSX(ctx); + + tcg_gen_gvec_2i(vsr_full_offset(a->xt), vsr_full_offset(a->xb), + 16, 16, (int32_t)(a->uim), &op[vece - MO_32]); + + return true; +} + +TRANS_FLAGS2(VSX, XVTSTDCSP, do_xvtstdc, MO_32) +TRANS_FLAGS2(VSX, XVTSTDCDP, do_xvtstdc, MO_64) + bool trans_XSCVSPDPN(DisasContext *ctx, arg_XX2 *a) { TCGv_i64 tmp; @@ -1213,8 +1239,6 @@ GEN_VSX_HELPER_X2(xvrspic, 0x16, 0x0A, 0, PPC2_VSX) GEN_VSX_HELPER_X2(xvrspim, 0x12, 0x0B, 0, PPC2_VSX) GEN_VSX_HELPER_X2(xvrspip, 0x12, 0x0A, 0, PPC2_VSX) GEN_VSX_HELPER_X2(xvrspiz, 0x12, 0x09, 0, PPC2_VSX) -GEN_VSX_HELPER_2(xvtstdcsp, 0x14, 0x1A, 0, PPC2_VSX) -GEN_VSX_HELPER_2(xvtstdcdp, 0x14, 0x1E, 0, PPC2_VSX) =20 static bool trans_XXPERM(DisasContext *ctx, arg_XX3 *a) { diff --git a/target/ppc/translate/vsx-ops.c.inc b/target/ppc/translate/vsx-= ops.c.inc index f7d7377379..4b317d4b06 100644 --- a/target/ppc/translate/vsx-ops.c.inc +++ b/target/ppc/translate/vsx-ops.c.inc @@ -157,14 +157,6 @@ GEN_XX2FORM_EO(xvxexpdp, 0x16, 0x1D, 0x00, PPC2_ISA300= ), GEN_XX2FORM_EO(xvxsigdp, 0x16, 0x1D, 0x01, PPC2_ISA300), GEN_XX2FORM_EO(xvxexpsp, 0x16, 0x1D, 0x08, PPC2_ISA300), =20 -/* DCMX =3D bit[25] << 6 | bit[29] << 5 | bit[11:15] */ -#define GEN_XX2FORM_DCMX(name, opc2, opc3, fl2) \ -GEN_XX3FORM(name, opc2, opc3 | 0, fl2), \ -GEN_XX3FORM(name, opc2, opc3 | 1, fl2) - -GEN_XX2FORM_DCMX(xvtstdcdp, 0x14, 0x1E, PPC2_ISA300), -GEN_XX2FORM_DCMX(xvtstdcsp, 0x14, 0x1A, PPC2_ISA300), - GEN_XX3FORM(xsadddp, 0x00, 0x04, PPC2_VSX), GEN_VSX_XFORM_300(xsaddqp, 0x04, 0x00, 0x0), GEN_XX3FORM(xssubdp, 0x00, 0x05, PPC2_VSX), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975524; cv=none; d=zohomail.com; s=zohoarc; b=fRo9iqmfBf7tdqMgOzKNgm5mKACRD7l3ebwT+soqPxik66K3qS9V1RM2gXSX2mjffM4vLdHJU3Q9Hq1MG+dg6Ia5AZ+3wGC55AhagxQONG9ym0JW4tb2ksYaiCKiyN+xqzdoGANov7fzF4YEs2xxqvwZJAfAHu+tavvS0gleFXM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975524; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rXpDHbbGCki717TaP5jCn+ddwbfnGOUM1eEHbiVBV0s=; b=EdaxT7K5NxQER1/EtwLy+Kld//NdAiVFxTWKOosE10mDg85CXbTjCJB2ntDZqaU68cheY/P5uecqIYaF6+ef0brPxZecJU8HB72A2xggny5gR0n1G+muLG9853FBiTiliB8oiEYQh+vzijVKS2gQaGUNwmWFrsVOvuCO3xcU8D4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975524221151.23421980218006; Fri, 28 Oct 2022 09:45:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQj-0006ZX-9R; Fri, 28 Oct 2022 12:42:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQ8-0001S8-AC; Fri, 28 Oct 2022 12:41:26 -0400 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQ2-0008Jl-O6; Fri, 28 Oct 2022 12:41:24 -0400 Received: by mail-ot1-x332.google.com with SMTP id r13-20020a056830418d00b0065601df69c0so3271836otu.7; Fri, 28 Oct 2022 09:41:16 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rXpDHbbGCki717TaP5jCn+ddwbfnGOUM1eEHbiVBV0s=; b=Jdpkdrqc3Pq19Tz6YI8hPpfKf83hVqtFpKG8qebzJE+Dv+ZGjDljPQh+uoJql9/e4l ywdEOARiBqeDZswCkLI/zNt5zRYYMvs62Tk5fVHzmHeWoNefXEocZOe/XPi72PbYx1lL 4VMB8TRBJQcjrFEFBZQ1nOkGwAnTAeHZdqVAAF4qXpYXo/W3id8C8uEwWeLw1ypSlo/0 vK/8G7kyyc252/UQDLyApTk9mOkKI/kJXKMrAK76cTquEfok6j/qJfaE7hcimh30P4sp y86Ew/JYC95XEktA0fHRtyMbWUfL/o/wpgvIler1gU53gnx0C+OI9hhtTdPhqzP+9hd0 CYFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rXpDHbbGCki717TaP5jCn+ddwbfnGOUM1eEHbiVBV0s=; b=x0ez3W+gdt/7JbCC4eSrhov0e/0IW2RT67RGSnoAok9Yl+2jNQA7IfAJBn/rftYvCq qW+dwAO/154PU8chN3PHnigiEuHdfl1iWgEWpads578erqmWaKXz75q7NyEoUy5S9X3Q s/kssJLHWXkOVXMXJho3ay9cNnsYpg5oOEyGLcEecuL6epbGs9jnIb6QzHOK+5h24tpR PvgkD6lDGkuQokneCswCh/HqwKeFwwOCUICDPpnpt6hScb1oCAvmOzEx0Gvc+4vEvCl0 yH/celUFZ+SFbyoArMSknNjVQS6K/JGEEsVtD1uZ2z444Skwn4SW6i6DXn84mShvNZO3 kpig== X-Gm-Message-State: ACrzQf2QUYcoH0IFWRBKc3RZRqpRINEMB1MfaeVdJOS9oKG5+VIqWdn5 qEI5KmD5sBkVzHEJJvFxovajblf6b1Gj6A== X-Google-Smtp-Source: AMsMyM6LsRCBnxQqHf2p10PcRkNpuuCuAy6axi4GQtowx180+xU/ZyYypjGqgYTo0VDjpLUWxVv2Rw== X-Received: by 2002:a05:6830:d0b:b0:661:9435:5e30 with SMTP id bu11-20020a0568300d0b00b0066194355e30mr121730otb.276.1666975275599; Fri, 28 Oct 2022 09:41:15 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 17/62] target/ppc: Moved XSTSTDC[QDS]P to decodetree Date: Fri, 28 Oct 2022 13:39:06 -0300 Message-Id: <20221028163951.810456-18-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::332; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x332.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975526071100017 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Moved XSTSTDCSP, XSTSTDCDP and XSTSTDCQP to decodetree and moved some of its decoding away from the helper as previously the DCMX, XB and BF were calculated in the helper with the help of cpu_env, now that part was moved to the decodetree with the rest. xvtstdcsp: rept loop master patch 8 12500 1,85393600 1,94683600 (+5.0%) 25 4000 1,78779800 1,92479000 (+7.7%) 100 1000 2,12775000 2,28895500 (+7.6%) 500 200 2,99655300 3,23102900 (+7.8%) 2500 40 6,89082200 7,44827500 (+8.1%) 8000 12 17,50585500 18,95152100 (+8.3%) xvtstdcdp: rept loop master patch 8 12500 1,39043100 1,33539800 (-4.0%) 25 4000 1,35731800 1,37347800 (+1.2%) 100 1000 1,51514800 1,56053000 (+3.0%) 500 200 2,21014400 2,47906000 (+12.2%) 2500 40 5,39488200 6,68766700 (+24.0%) 8000 12 13,98623900 18,17661900 (+30.0%) xvtstdcdp: rept loop master patch 8 12500 1,35123800 1,34455800 (-0.5%) 25 4000 1,36441200 1,36759600 (+0.2%) 100 1000 1,49763500 1,54138400 (+2.9%) 500 200 2,19020200 2,46196400 (+12.4%) 2500 40 5,39265700 6,68147900 (+23.9%) 8000 12 14,04163600 18,19669600 (+29.6%) As some values are now decoded outside the helper and passed to it as an argument the number of arguments of the helper increased, the number of TCGop needed to load the arguments increased. I suspect that's why the slow-down in the tests with a high REPT but low LOOP. Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-12-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/fpu_helper.c | 114 +++++++++------------------- target/ppc/helper.h | 6 +- target/ppc/insn32.decode | 6 ++ target/ppc/translate/vsx-impl.c.inc | 20 ++++- target/ppc/translate/vsx-ops.c.inc | 4 - 5 files changed, 60 insertions(+), 90 deletions(-) diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c index 960a76a8a5..a66e16c212 100644 --- a/target/ppc/fpu_helper.c +++ b/target/ppc/fpu_helper.c @@ -3241,63 +3241,6 @@ void helper_XVXSIGSP(ppc_vsr_t *xt, ppc_vsr_t *xb) *xt =3D t; } =20 -/* - * VSX_TEST_DC - VSX floating point test data class - * op - instruction mnemonic - * nels - number of elements (1, 2 or 4) - * xbn - VSR register number - * tp - type (float32 or float64) - * fld - vsr_t field (VsrD(*) or VsrW(*)) - * tfld - target vsr_t field (VsrD(*) or VsrW(*)) - * fld_max - target field max - * scrf - set result in CR and FPCC - */ -#define VSX_TEST_DC(op, nels, xbn, tp, fld, tfld, fld_max, scrf) \ -void helper_##op(CPUPPCState *env, uint32_t opcode) \ -{ \ - ppc_vsr_t *xt =3D &env->vsr[xT(opcode)]; \ - ppc_vsr_t *xb =3D &env->vsr[xbn]; \ - ppc_vsr_t t =3D { }; \ - uint32_t i, sign, dcmx; \ - uint32_t cc, match =3D 0; \ - \ - if (!scrf) { \ - dcmx =3D DCMX_XV(opcode); \ - } else { \ - t =3D *xt; \ - dcmx =3D DCMX(opcode); \ - } \ - \ - for (i =3D 0; i < nels; i++) { \ - sign =3D tp##_is_neg(xb->fld); \ - if (tp##_is_any_nan(xb->fld)) { \ - match =3D extract32(dcmx, 6, 1); \ - } else if (tp##_is_infinity(xb->fld)) { \ - match =3D extract32(dcmx, 4 + !sign, 1); \ - } else if (tp##_is_zero(xb->fld)) { \ - match =3D extract32(dcmx, 2 + !sign, 1); \ - } else if (tp##_is_zero_or_denormal(xb->fld)) { \ - match =3D extract32(dcmx, 0 + !sign, 1); \ - } \ - \ - if (scrf) { \ - cc =3D sign << CRF_LT_BIT | match << CRF_EQ_BIT; \ - env->fpscr &=3D ~FP_FPCC; \ - env->fpscr |=3D cc << FPSCR_FPCC; \ - env->crf[BF(opcode)] =3D cc; \ - } else { \ - t.tfld =3D match ? fld_max : 0; \ - } \ - match =3D 0; \ - } \ - if (!scrf) { \ - *xt =3D t; \ - } \ -} - -VSX_TEST_DC(xststdcdp, 1, xB(opcode), float64, VsrD(0), VsrD(0), 0, 1) -VSX_TEST_DC(xststdcqp, 1, (rB(opcode) + 32), float128, f128, VsrD(0), 0, 1) - #define VSX_TSTDC(tp) \ static int32_t tp##_tstdc(tp b, uint32_t dcmx) \ { \ @@ -3317,6 +3260,7 @@ static int32_t tp##_tstdc(tp b, uint32_t dcmx) = \ =20 VSX_TSTDC(float32) VSX_TSTDC(float64) +VSX_TSTDC(float128) #undef VSX_TSTDC =20 void helper_XVTSTDCDP(ppc_vsr_t *t, ppc_vsr_t *b, uint64_t dcmx, uint32_t = v) @@ -3335,34 +3279,44 @@ void helper_XVTSTDCSP(ppc_vsr_t *t, ppc_vsr_t *b, u= int64_t dcmx, uint32_t v) } } =20 -void helper_xststdcsp(CPUPPCState *env, uint32_t opcode, ppc_vsr_t *xb) +static bool not_SP_value(float64 val) { - uint32_t dcmx, sign, exp; - uint32_t cc, match =3D 0, not_sp =3D 0; - float64 arg =3D xb->VsrD(0); - float64 arg_sp; - - dcmx =3D DCMX(opcode); - exp =3D (arg >> 52) & 0x7FF; - sign =3D float64_is_neg(arg); - - if (float64_is_any_nan(arg)) { - match =3D extract32(dcmx, 6, 1); - } else if (float64_is_infinity(arg)) { - match =3D extract32(dcmx, 4 + !sign, 1); - } else if (float64_is_zero(arg)) { - match =3D extract32(dcmx, 2 + !sign, 1); - } else if (float64_is_zero_or_denormal(arg) || (exp > 0 && exp < 0x381= )) { - match =3D extract32(dcmx, 0 + !sign, 1); - } - - arg_sp =3D helper_todouble(helper_tosingle(arg)); - not_sp =3D arg !=3D arg_sp; + return val !=3D helper_todouble(helper_tosingle(val)); +} =20 +/* + * VSX_XS_TSTDC - VSX Scalar Test Data Class + * NAME - instruction name + * FLD - vsr_t field (VsrD(0) or f128) + * TP - type (float64 or float128) + */ +#define VSX_XS_TSTDC(NAME, FLD, TP) = \ + void helper_##NAME(CPUPPCState *env, uint32_t bf, = \ + uint32_t dcmx, ppc_vsr_t *b) = \ + { = \ + uint32_t cc, match, sign =3D TP##_is_neg(b->FLD); = \ + match =3D TP##_tstdc(b->FLD, dcmx); = \ + cc =3D sign << CRF_LT_BIT | match << CRF_EQ_BIT; = \ + env->fpscr &=3D ~FP_FPCC; = \ + env->fpscr |=3D cc << FPSCR_FPCC; = \ + env->crf[bf] =3D cc; = \ + } + +VSX_XS_TSTDC(XSTSTDCDP, VsrD(0), float64) +VSX_XS_TSTDC(XSTSTDCQP, f128, float128) +#undef VSX_XS_TSTDC + +void helper_XSTSTDCSP(CPUPPCState *env, uint32_t bf, + uint32_t dcmx, ppc_vsr_t *b) +{ + uint32_t cc, match, sign =3D float64_is_neg(b->VsrD(0)); + uint32_t exp =3D (b->VsrD(0) >> 52) & 0x7FF; + int not_sp =3D (int)not_SP_value(b->VsrD(0)); + match =3D float64_tstdc(b->VsrD(0), dcmx) || (exp > 0 && exp < 0x381); cc =3D sign << CRF_LT_BIT | match << CRF_EQ_BIT | not_sp << CRF_SO_BIT; env->fpscr &=3D ~FP_FPCC; env->fpscr |=3D cc << FPSCR_FPCC; - env->crf[BF(opcode)] =3D cc; + env->crf[bf] =3D cc; } =20 void helper_xsrqpi(CPUPPCState *env, uint32_t opcode, diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 9e5d11939b..8344fe39c6 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -417,9 +417,9 @@ DEF_HELPER_3(xscvuxdsp, void, env, vsr, vsr) DEF_HELPER_3(xscvsxdsp, void, env, vsr, vsr) DEF_HELPER_4(xscvudqp, void, env, i32, vsr, vsr) DEF_HELPER_3(xscvuxddp, void, env, vsr, vsr) -DEF_HELPER_3(xststdcsp, void, env, i32, vsr) -DEF_HELPER_2(xststdcdp, void, env, i32) -DEF_HELPER_2(xststdcqp, void, env, i32) +DEF_HELPER_4(XSTSTDCSP, void, env, i32, i32, vsr) +DEF_HELPER_4(XSTSTDCDP, void, env, i32, i32, vsr) +DEF_HELPER_4(XSTSTDCQP, void, env, i32, i32, vsr) DEF_HELPER_3(xsrdpi, void, env, vsr, vsr) DEF_HELPER_3(xsrdpic, void, env, vsr, vsr) DEF_HELPER_3(xsrdpim, void, env, vsr, vsr) diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode index 44905edd29..f8f589e9fd 100644 --- a/target/ppc/insn32.decode +++ b/target/ppc/insn32.decode @@ -202,6 +202,9 @@ %xx_uim7 6:1 2:1 16:5 @XX2_uim7 ...... ..... ..... ..... .... . ... . .. &XX2_uim x= t=3D%xx_xt xb=3D%xx_xb uim=3D%xx_uim7 =20 +&XX2_bf_uim bf xb uim +@XX2_bf_uim ...... bf:3 uim:7 ..... ......... . . &XX2_bf_uim + &XX2_bf_xb bf xb @XX2_bf_xb ...... bf:3 .. ..... ..... ......... . . &XX2_bf_xb= xb=3D%xx_xb =20 @@ -853,6 +856,9 @@ XSCVSPDPN 111100 ..... ----- ..... 101001011 .. = @XX2 XVXSIGSP 111100 ..... 01001 ..... 111011011 .. @XX2 XVTSTDCDP 111100 ..... ..... ..... 1111 . 101 ... @XX2_uim7 XVTSTDCSP 111100 ..... ..... ..... 1101 . 101 ... @XX2_uim7 +XSTSTDCSP 111100 ... ....... ..... 100101010 . - @XX2_bf_uim xb=3D%= xx_xb +XSTSTDCDP 111100 ... ....... ..... 101101010 . - @XX2_bf_uim xb=3D%= xx_xb +XSTSTDCQP 111111 ... ....... xb:5 1011000100 - @XX2_bf_uim =20 ## VSX Vector Test Least-Significant Bit by Byte Instruction =20 diff --git a/target/ppc/translate/vsx-impl.c.inc b/target/ppc/translate/vsx= -impl.c.inc index 287ea8e2ce..af410cbf1b 100644 --- a/target/ppc/translate/vsx-impl.c.inc +++ b/target/ppc/translate/vsx-impl.c.inc @@ -1136,6 +1136,23 @@ static bool do_xvtstdc(DisasContext *ctx, arg_XX2_ui= m *a, unsigned vece) TRANS_FLAGS2(VSX, XVTSTDCSP, do_xvtstdc, MO_32) TRANS_FLAGS2(VSX, XVTSTDCDP, do_xvtstdc, MO_64) =20 +static bool do_XX2_bf_uim(DisasContext *ctx, arg_XX2_bf_uim *a, bool vsr, + void (*gen_helper)(TCGv_env, TCGv_i32, TCGv_i32, TCGv= _ptr)) +{ + TCGv_ptr xb; + + REQUIRE_VSX(ctx); + xb =3D vsr ? gen_vsr_ptr(a->xb) : gen_avr_ptr(a->xb); + gen_helper(cpu_env, tcg_constant_i32(a->bf), tcg_constant_i32(a->uim),= xb); + tcg_temp_free_ptr(xb); + + return true; +} + +TRANS_FLAGS2(ISA300, XSTSTDCSP, do_XX2_bf_uim, true, gen_helper_XSTSTDCSP) +TRANS_FLAGS2(ISA300, XSTSTDCDP, do_XX2_bf_uim, true, gen_helper_XSTSTDCDP) +TRANS_FLAGS2(ISA300, XSTSTDCQP, do_XX2_bf_uim, false, gen_helper_XSTSTDCQP) + bool trans_XSCVSPDPN(DisasContext *ctx, arg_XX2 *a) { TCGv_i64 tmp; @@ -1182,9 +1199,6 @@ GEN_VSX_HELPER_X2(xssqrtsp, 0x16, 0x00, 0, PPC2_VSX20= 7) GEN_VSX_HELPER_X2(xsrsqrtesp, 0x14, 0x00, 0, PPC2_VSX207) GEN_VSX_HELPER_X2(xscvsxdsp, 0x10, 0x13, 0, PPC2_VSX207) GEN_VSX_HELPER_X2(xscvuxdsp, 0x10, 0x12, 0, PPC2_VSX207) -GEN_VSX_HELPER_X1(xststdcsp, 0x14, 0x12, 0, PPC2_ISA300) -GEN_VSX_HELPER_2(xststdcdp, 0x14, 0x16, 0, PPC2_ISA300) -GEN_VSX_HELPER_2(xststdcqp, 0x04, 0x16, 0, PPC2_ISA300) =20 GEN_VSX_HELPER_X3(xvadddp, 0x00, 0x0C, 0, PPC2_VSX) GEN_VSX_HELPER_X3(xvsubdp, 0x00, 0x0D, 0, PPC2_VSX) diff --git a/target/ppc/translate/vsx-ops.c.inc b/target/ppc/translate/vsx-= ops.c.inc index 4b317d4b06..a3ba094d62 100644 --- a/target/ppc/translate/vsx-ops.c.inc +++ b/target/ppc/translate/vsx-ops.c.inc @@ -147,10 +147,6 @@ GEN_HANDLER_E(xsiexpdp, 0x3C, 0x16, 0x1C, 0, PPC_NONE,= PPC2_ISA300), GEN_VSX_XFORM_300(xsiexpqp, 0x4, 0x1B, 0x00000001), #endif =20 -GEN_XX2FORM(xststdcdp, 0x14, 0x16, PPC2_ISA300), -GEN_XX2FORM(xststdcsp, 0x14, 0x12, PPC2_ISA300), -GEN_VSX_XFORM_300(xststdcqp, 0x04, 0x16, 0x00000001), - GEN_XX3FORM(xviexpsp, 0x00, 0x1B, PPC2_ISA300), GEN_XX3FORM(xviexpdp, 0x00, 0x1F, PPC2_ISA300), GEN_XX2FORM_EO(xvxexpdp, 0x16, 0x1D, 0x00, PPC2_ISA300), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975370; cv=none; d=zohomail.com; s=zohoarc; b=BSYNxSHjn+6FfVoR3c6h0DKyBx22f2Bh4brETI9YaRjq48z0ZrqH+cT5XCFtZHqbz3ZL4c2SI14u2H8+UWH/zxdlRGWMoRHSEtna0eez1dNjZNcI13Plaxg3jM4IC5CjrWG8OtgtHIhsACwyVI/eYgWsUnwKoT9FAfOhNAP8dtc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975370; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=4PdblXmKrwDvcs6KxN1I8n8aZ9nDoE5bUtGBz1p9NeE=; b=AiC08viq9TIs6gtB/FZeYzqHLn8HlZve2MDQC3S5Zku1OHmOnuVCI/nGP+GFzx3GCgowbva5086kgoWLZgbIapcyoOdVtdFJbOHa5Zi8+EkrR9IBfRxlewZTmEUlFFsi4Ew5v7fHc1fu3Y6gWwjw9mVx1z2cwUuAfuK3I+qEPBs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975370533531.4658724973907; Fri, 28 Oct 2022 09:42:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQk-0006rw-Tj; Fri, 28 Oct 2022 12:42:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQA-0001dm-7a; Fri, 28 Oct 2022 12:41:28 -0400 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQ5-0008Ky-Io; Fri, 28 Oct 2022 12:41:24 -0400 Received: by mail-oi1-x236.google.com with SMTP id g10so6679922oif.10; Fri, 28 Oct 2022 09:41:19 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4PdblXmKrwDvcs6KxN1I8n8aZ9nDoE5bUtGBz1p9NeE=; b=OWEz79mdtcdVAM8NyWiJv3p8nvlNeIDAjCS6+vz2zfqKdwKHeaI3Y0EdNf70Ju2Lsu 8Qih4gz5I43syr3EV4yX4a5W2tixAP+QWMwKprR78pte91GnoZmx5pTEC/cj50J3OqaR MAAGW/fd7cxZ1OY8jhcDeeW0dAesGVuyWlub040GzirCTLC0z5xC8mWBDADaSJ7A9qKv ietRBr1/bwlYZVqwMTJmPM52OymEy1S4vCGbShY5e5UVZJJ3s6Y/XhhfeXhGhzmqyMaz K2wJlzxE8YXY1Qxc2KGjTeXbk9nwN6SPNZpawsbgXX0vVHvVRSC0GyovTE5YJAMjZKCR cUkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4PdblXmKrwDvcs6KxN1I8n8aZ9nDoE5bUtGBz1p9NeE=; b=PqMzaPJWGKkubn9EL7373nsuUrI0RBHym2wxO+XxjG/mC35+Jj8FH0Q/G2VbIurdwT /mr64Ty5egzSzKCOkapMCRtMZ2juXlk4+O8/25h2AS9mryuZ9i+WiaJGdrMoUP+ZO24D rCCIOKgyOoP26wTjh7qTl5Xfq4qRR/CMcyFKJhA19NxsVHMUv/i8/vvP2LHbeSzOztLZ Hfp3V9uDDmAFcEej7KhRVe4Hd7bsELPnWlHKosjMkBJUIWA7jWc67PWK4QBnmRvSn29C AS4L/+546FRHqsNXumCElJq2SJzyj1fo7CPw43dA6L5iCoQlX4ikYHan3kArOWOGk2XR 890Q== X-Gm-Message-State: ACrzQf25KY7ERJoCdWunIaIsNWzv/y2gadULwEKPZaFtLflvxWfDVpqW /3/yR/qxUvDA98iAyuQBjmjKdeeXCN+szg== X-Google-Smtp-Source: AMsMyM7IMLGDcrzpH/UxsLcfA0pNU3UEZw+jRD8Osu7DkVf2fCbGwv7Xn6DKyoLq/ftSib+NoRpZfg== X-Received: by 2002:aca:f0c2:0:b0:34f:df0b:2de9 with SMTP id o185-20020acaf0c2000000b0034fdf0b2de9mr8687783oih.245.1666975278942; Fri, 28 Oct 2022 09:41:18 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, "Lucas Mateus Castro (alqotel)" , Richard Henderson , Daniel Henrique Barboza Subject: [PULL 18/62] target/ppc: Use gvec to decode XVTSTDC[DS]P Date: Fri, 28 Oct 2022 13:39:07 -0300 Message-Id: <20221028163951.810456-19-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::236; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x236.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975371350100001 Content-Type: text/plain; charset="utf-8" From: "Lucas Mateus Castro (alqotel)" Used gvec to translate XVTSTDCSP and XVTSTDCDP. xvtstdcsp: rept loop imm master version prev version current version 25 4000 0 0,206200 0,040730 (-80.2%) 0,040740 (-80.= 2%) 25 4000 1 0,205120 0,053650 (-73.8%) 0,053510 (-73.= 9%) 25 4000 3 0,206160 0,058630 (-71.6%) 0,058570 (-71.= 6%) 25 4000 51 0,217110 0,191490 (-11.8%) 0,192320 (-11.= 4%) 25 4000 127 0,206160 0,191490 (-7.1%) 0,192640 (-6.6= %) 8000 12 0 1,234719 0,418833 (-66.1%) 0,386365 (-68.= 7%) 8000 12 1 1,232417 1,435979 (+16.5%) 1,462792 (+18.= 7%) 8000 12 3 1,232760 1,766073 (+43.3%) 1,743990 (+41.= 5%) 8000 12 51 1,239281 1,319562 (+6.5%) 1,423479 (+14.= 9%) 8000 12 127 1,231708 1,315760 (+6.8%) 1,426667 (+15.= 8%) xvtstdcdp: rept loop imm master version prev version current version 25 4000 0 0,159930 0,040830 (-74.5%) 0,040610 (-74.= 6%) 25 4000 1 0,160640 0,053670 (-66.6%) 0,053480 (-66.= 7%) 25 4000 3 0,160020 0,063030 (-60.6%) 0,062960 (-60.= 7%) 25 4000 51 0,160410 0,128620 (-19.8%) 0,127470 (-20.= 5%) 25 4000 127 0,160330 0,127670 (-20.4%) 0,128690 (-19.= 7%) 8000 12 0 1,190365 0,422146 (-64.5%) 0,388417 (-67.= 4%) 8000 12 1 1,191292 1,445312 (+21.3%) 1,428698 (+19.= 9%) 8000 12 3 1,188687 1,980656 (+66.6%) 1,975354 (+66.= 2%) 8000 12 51 1,191250 1,264500 (+6.1%) 1,355083 (+13.= 8%) 8000 12 127 1,197313 1,266729 (+5.8%) 1,349156 (+12.= 7%) Overall, these instructions are the hardest ones to measure performance as the gvec implementation is affected by the immediate. Above there are 5 different scenarios when it comes to immediate and 2 when it comes to rept/loop combination. The immediates scenarios are: all bits are 0 therefore the target register should just be changed to 0, with 1 bit set, with 2 bits set in a combination the new implementation can deal with using gvec, 4 bits set and the new implementation can't deal with it using gvec and all bits set. The rept/loop scenarios are high loop and low rept (so it should spend more time executing it than translating it) and high rept low loop (so it should spend more time translating it than executing this code). These comparisons are between the upstream version, a previous similar implementation and a one with a cleaner code(this one). For a comparison with o previous different implementation: <20221010191356.83659-13-lucas.araujo@eldorado.org.br> Signed-off-by: Lucas Mateus Castro (alqotel) Reviewed-by: Richard Henderson Message-Id: <20221019125040.48028-13-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/translate/vsx-impl.c.inc | 167 ++++++++++++++++++++++++++-- 1 file changed, 157 insertions(+), 10 deletions(-) diff --git a/target/ppc/translate/vsx-impl.c.inc b/target/ppc/translate/vsx= -impl.c.inc index af410cbf1b..4deb29ee42 100644 --- a/target/ppc/translate/vsx-impl.c.inc +++ b/target/ppc/translate/vsx-impl.c.inc @@ -632,6 +632,8 @@ static void gen_mtvsrws(DisasContext *ctx) #define SGN_MASK_SP 0x8000000080000000ull #define EXP_MASK_DP 0x7FF0000000000000ull #define EXP_MASK_SP 0x7F8000007F800000ull +#define FRC_MASK_DP (~(SGN_MASK_DP | EXP_MASK_DP)) +#define FRC_MASK_SP (~(SGN_MASK_SP | EXP_MASK_SP)) =20 #define VSX_SCALAR_MOVE(name, op, sgn_mask) \ static void glue(gen_, name)(DisasContext *ctx) \ @@ -1112,23 +1114,168 @@ GEN_VSX_HELPER_X2(xscvhpdp, 0x16, 0x15, 0x10, PPC2= _ISA300) GEN_VSX_HELPER_R2(xscvsdqp, 0x04, 0x1A, 0x0A, PPC2_ISA300) GEN_VSX_HELPER_X2(xscvspdp, 0x12, 0x14, 0, PPC2_VSX) =20 +/* test if +Inf */ +static void gen_is_pos_inf(unsigned vece, TCGv_vec t, TCGv_vec b, int64_t = v) +{ + uint64_t exp_msk =3D (vece =3D=3D MO_32) ? (uint32_t)EXP_MASK_SP : EXP= _MASK_DP; + tcg_gen_cmp_vec(TCG_COND_EQ, vece, t, b, + tcg_constant_vec_matching(t, vece, exp_msk)); +} + +/* test if -Inf */ +static void gen_is_neg_inf(unsigned vece, TCGv_vec t, TCGv_vec b, int64_t = v) +{ + uint64_t exp_msk =3D (vece =3D=3D MO_32) ? (uint32_t)EXP_MASK_SP : EXP= _MASK_DP; + uint64_t sgn_msk =3D (vece =3D=3D MO_32) ? (uint32_t)SGN_MASK_SP : SGN= _MASK_DP; + tcg_gen_cmp_vec(TCG_COND_EQ, vece, t, b, + tcg_constant_vec_matching(t, vece, sgn_msk | exp_msk)); +} + +/* test if +Inf or -Inf */ +static void gen_is_any_inf(unsigned vece, TCGv_vec t, TCGv_vec b, int64_t = v) +{ + uint64_t exp_msk =3D (vece =3D=3D MO_32) ? (uint32_t)EXP_MASK_SP : EXP= _MASK_DP; + uint64_t sgn_msk =3D (vece =3D=3D MO_32) ? (uint32_t)SGN_MASK_SP : SGN= _MASK_DP; + tcg_gen_andc_vec(vece, b, b, tcg_constant_vec_matching(t, vece, sgn_ms= k)); + tcg_gen_cmp_vec(TCG_COND_EQ, vece, t, b, + tcg_constant_vec_matching(t, vece, exp_msk)); +} + +/* test if +0 */ +static void gen_is_pos_zero(unsigned vece, TCGv_vec t, TCGv_vec b, int64_t= v) +{ + tcg_gen_cmp_vec(TCG_COND_EQ, vece, t, b, + tcg_constant_vec_matching(t, vece, 0)); +} + +/* test if -0 */ +static void gen_is_neg_zero(unsigned vece, TCGv_vec t, TCGv_vec b, int64_t= v) +{ + uint64_t sgn_msk =3D (vece =3D=3D MO_32) ? (uint32_t)SGN_MASK_SP : SGN= _MASK_DP; + tcg_gen_cmp_vec(TCG_COND_EQ, vece, t, b, + tcg_constant_vec_matching(t, vece, sgn_msk)); +} + +/* test if +0 or -0 */ +static void gen_is_any_zero(unsigned vece, TCGv_vec t, TCGv_vec b, int64_t= v) +{ + uint64_t sgn_msk =3D (vece =3D=3D MO_32) ? (uint32_t)SGN_MASK_SP : SGN= _MASK_DP; + tcg_gen_andc_vec(vece, b, b, tcg_constant_vec_matching(t, vece, sgn_ms= k)); + tcg_gen_cmp_vec(TCG_COND_EQ, vece, t, b, + tcg_constant_vec_matching(t, vece, 0)); +} + +/* test if +Denormal */ +static void gen_is_pos_denormal(unsigned vece, TCGv_vec t, + TCGv_vec b, int64_t v) +{ + uint64_t frc_msk =3D (vece =3D=3D MO_32) ? (uint32_t)FRC_MASK_SP : FRC= _MASK_DP; + tcg_gen_cmp_vec(TCG_COND_LEU, vece, t, b, + tcg_constant_vec_matching(t, vece, frc_msk)); + tcg_gen_cmp_vec(TCG_COND_NE, vece, b, b, + tcg_constant_vec_matching(t, vece, 0)); + tcg_gen_and_vec(vece, t, t, b); +} + +/* test if -Denormal */ +static void gen_is_neg_denormal(unsigned vece, TCGv_vec t, + TCGv_vec b, int64_t v) +{ + uint64_t sgn_msk =3D (vece =3D=3D MO_32) ? (uint32_t)SGN_MASK_SP : SGN= _MASK_DP; + uint64_t frc_msk =3D (vece =3D=3D MO_32) ? (uint32_t)FRC_MASK_SP : FRC= _MASK_DP; + tcg_gen_cmp_vec(TCG_COND_LEU, vece, t, b, + tcg_constant_vec_matching(t, vece, sgn_msk | frc_msk)); + tcg_gen_cmp_vec(TCG_COND_GTU, vece, b, b, + tcg_constant_vec_matching(t, vece, sgn_msk)); + tcg_gen_and_vec(vece, t, t, b); +} + +/* test if +Denormal or -Denormal */ +static void gen_is_any_denormal(unsigned vece, TCGv_vec t, + TCGv_vec b, int64_t v) +{ + uint64_t sgn_msk =3D (vece =3D=3D MO_32) ? (uint32_t)SGN_MASK_SP : SGN= _MASK_DP; + uint64_t frc_msk =3D (vece =3D=3D MO_32) ? (uint32_t)FRC_MASK_SP : FRC= _MASK_DP; + tcg_gen_andc_vec(vece, b, b, tcg_constant_vec_matching(t, vece, sgn_ms= k)); + tcg_gen_cmp_vec(TCG_COND_LE, vece, t, b, + tcg_constant_vec_matching(t, vece, frc_msk)); + tcg_gen_cmp_vec(TCG_COND_NE, vece, b, b, + tcg_constant_vec_matching(t, vece, 0)); + tcg_gen_and_vec(vece, t, t, b); +} + +/* test if NaN */ +static void gen_is_nan(unsigned vece, TCGv_vec t, TCGv_vec b, int64_t v) +{ + uint64_t exp_msk =3D (vece =3D=3D MO_32) ? (uint32_t)EXP_MASK_SP : EXP= _MASK_DP; + uint64_t sgn_msk =3D (vece =3D=3D MO_32) ? (uint32_t)SGN_MASK_SP : SGN= _MASK_DP; + tcg_gen_and_vec(vece, b, b, tcg_constant_vec_matching(t, vece, ~sgn_ms= k)); + tcg_gen_cmp_vec(TCG_COND_GT, vece, t, b, + tcg_constant_vec_matching(t, vece, exp_msk)); +} + static bool do_xvtstdc(DisasContext *ctx, arg_XX2_uim *a, unsigned vece) { - static const GVecGen2i op[] =3D { - { - .fnoi =3D gen_helper_XVTSTDCSP, - .vece =3D MO_32 - }, - { - .fnoi =3D gen_helper_XVTSTDCDP, - .vece =3D MO_64 - }, + static const TCGOpcode vecop_list[] =3D { + INDEX_op_cmp_vec, 0 + }; + + GVecGen2i op =3D { + .fnoi =3D (vece =3D=3D MO_32) ? gen_helper_XVTSTDCSP : gen_helper_= XVTSTDCDP, + .vece =3D vece, + .opt_opc =3D vecop_list }; =20 REQUIRE_VSX(ctx); =20 + switch (a->uim) { + case 0: + set_cpu_vsr(a->xt, tcg_constant_i64(0), true); + set_cpu_vsr(a->xt, tcg_constant_i64(0), false); + return true; + case ((1 << 0) | (1 << 1)): + /* test if +Denormal or -Denormal */ + op.fniv =3D gen_is_any_denormal; + break; + case (1 << 0): + /* test if -Denormal */ + op.fniv =3D gen_is_neg_denormal; + break; + case (1 << 1): + /* test if +Denormal */ + op.fniv =3D gen_is_pos_denormal; + break; + case ((1 << 2) | (1 << 3)): + /* test if +0 or -0 */ + op.fniv =3D gen_is_any_zero; + break; + case (1 << 2): + /* test if -0 */ + op.fniv =3D gen_is_neg_zero; + break; + case (1 << 3): + /* test if +0 */ + op.fniv =3D gen_is_pos_zero; + break; + case ((1 << 4) | (1 << 5)): + /* test if +Inf or -Inf */ + op.fniv =3D gen_is_any_inf; + break; + case (1 << 4): + /* test if -Inf */ + op.fniv =3D gen_is_neg_inf; + break; + case (1 << 5): + /* test if +Inf */ + op.fniv =3D gen_is_pos_inf; + break; + case (1 << 6): + /* test if NaN */ + op.fniv =3D gen_is_nan; + break; + } tcg_gen_gvec_2i(vsr_full_offset(a->xt), vsr_full_offset(a->xb), - 16, 16, (int32_t)(a->uim), &op[vece - MO_32]); + 16, 16, a->uim, &op); =20 return true; } --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975621; cv=none; d=zohomail.com; s=zohoarc; b=nVLegPT2NqTbn/WeCY7iItdEAp3dMHj+J0Mv89aWyMTn68RR4jc9W7GMOCv7tlOFVvv0hA/BazzzSoB45xmw23aZFRdzcUzr9cwV88r+ihNbswBzSS4tMrhZeUZDlnLG/JymHKTbn2mF2SfaUZg1/lszjz2KHAWhnJ+VaZuYi30= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975621; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=aQMgQBUL/z42BRPKG0+UiGd22iAyg0JcGKSHWTlylG0=; b=XiTEtSOcYAnGvohIjm/nlMFRJNkdZ/T+DhUBpwBLaRV5PNxAZivCo4Nm3vR1+VNd1HN5uPoXZiu5OHUZPn5CWfz0XaD1aPYH1xqxA/kDksk1ATY2GKbWLVA2VfTzFPqWfvuvF28zSzsX88zKTjCIG4ZFXo2iiuaTr2VqGLXRjoE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975621680342.7917770640655; Fri, 28 Oct 2022 09:47:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQn-0007FV-AT; Fri, 28 Oct 2022 12:42:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQE-000249-4N; Fri, 28 Oct 2022 12:41:30 -0400 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQ8-0008Mz-ED; Fri, 28 Oct 2022 12:41:28 -0400 Received: by mail-ot1-x335.google.com with SMTP id v40-20020a056830092800b00661e37421c2so3278298ott.3; Fri, 28 Oct 2022 09:41:23 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aQMgQBUL/z42BRPKG0+UiGd22iAyg0JcGKSHWTlylG0=; b=fIvR2sjSqVerg+8PbDGDd8ViCNC5u78xXmFBnCku6hNc5OgrZRUWmICJWSfCO9rK2a nle5B9+FatvxaXSpqUAw860W8NzS4zO4P9YJjMnURAcGFMYYmrkoNL+fpsihS4wugAWx X7a2LVkG3SHgU8fLE/M69210yYISWJrW/dWoSJXH2WaoSwzTtI4ZqXe46bOvjzBY7Ljh LruYwFJK0Xyam78zuCMnHXqeRyb+ela64SXC+cuoSQrEFn/5M2xTBVDfsdjSVFdOQCQ+ +vWr9AkkSAWnUSGi9DLdmMVP3larVqx5sl3msJLJmI4beOHGXd/AAb9HsrLowTqqObMx 7FuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aQMgQBUL/z42BRPKG0+UiGd22iAyg0JcGKSHWTlylG0=; b=quH+sZ5pRxvu98OAuv0aZ42etfU4zSUlGrxG82bfqkMdRE/bZpTsr5z++a0f+WTfwq CfMo0qEbg0qb2InvXcEZq+WaV7RQdvLktyvyPSE8GFBWVaDuWOFcYGmj02mHVZb/uvTq fdFrVywtaITd2yDcKb87kQV2xXSDBwiPQDeIeI+tdoXbWSmZ+bZIlX6V7tjvyD5AKGXk X7zcU/M8TYOUQtipeOFY0B3ZKTUwl22R5C1tCuztXLToGU6WJulO5+uXC7o6wve8X2xU mv7dZTGJoVh8kricTsfJBbvB/Od2H0ZA3oszaOQPCfEhhnHAO8Zw3ojWB7B9wQue2AvQ v18w== X-Gm-Message-State: ACrzQf2hAIGZOPjS3CmKg1Z2ypz8c0fP6lqjv3AQfi4vGeNUnuYrJcE6 FENvXM4TcP+IGoHUUsqA/ZSuQm2R8wgSfA== X-Google-Smtp-Source: AMsMyM6Gfeznshqj4O7HzZJ9feGIsvkE8qbj3sOBbBoPMqI2/e4S4ix+el8QOXtHy53DuvyMzsws8w== X-Received: by 2002:a9d:198c:0:b0:661:aa2e:1aa0 with SMTP id k12-20020a9d198c000000b00661aa2e1aa0mr121609otk.154.1666975282288; Fri, 28 Oct 2022 09:41:22 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , David Gibson , Daniel Henrique Barboza Subject: [PULL 19/62] target/ppc: define PPC_INTERRUPT_* values directly Date: Fri, 28 Oct 2022 13:39:08 -0300 Message-Id: <20221028163951.810456-20-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::335; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x335.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975622631100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst This enum defines the bit positions in env->pending_interrupts for each interrupt. However, except for the comparison in kvmppc_set_interrupt, the values are always used as (1 << PPC_INTERRUPT_*). Define them directly like that to save some clutter. No functional change intended. Reviewed-by: David Gibson Signed-off-by: Matheus Ferst Message-Id: <20221011204829.1641124-2-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- hw/ppc/ppc.c | 10 +++--- hw/ppc/trace-events | 2 +- target/ppc/cpu.h | 40 +++++++++++----------- target/ppc/cpu_init.c | 56 +++++++++++++++--------------- target/ppc/excp_helper.c | 74 ++++++++++++++++++++-------------------- target/ppc/misc_helper.c | 6 ++-- 6 files changed, 94 insertions(+), 94 deletions(-) diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index 690f448cb9..77e611e81c 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -40,7 +40,7 @@ static void cpu_ppc_tb_stop (CPUPPCState *env); static void cpu_ppc_tb_start (CPUPPCState *env); =20 -void ppc_set_irq(PowerPCCPU *cpu, int n_IRQ, int level) +void ppc_set_irq(PowerPCCPU *cpu, int irq, int level) { CPUState *cs =3D CPU(cpu); CPUPPCState *env =3D &cpu->env; @@ -56,21 +56,21 @@ void ppc_set_irq(PowerPCCPU *cpu, int n_IRQ, int level) old_pending =3D env->pending_interrupts; =20 if (level) { - env->pending_interrupts |=3D 1 << n_IRQ; + env->pending_interrupts |=3D irq; cpu_interrupt(cs, CPU_INTERRUPT_HARD); } else { - env->pending_interrupts &=3D ~(1 << n_IRQ); + env->pending_interrupts &=3D ~irq; if (env->pending_interrupts =3D=3D 0) { cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); } } =20 if (old_pending !=3D env->pending_interrupts) { - kvmppc_set_interrupt(cpu, n_IRQ, level); + kvmppc_set_interrupt(cpu, irq, level); } =20 =20 - trace_ppc_irq_set_exit(env, n_IRQ, level, env->pending_interrupts, + trace_ppc_irq_set_exit(env, irq, level, env->pending_interrupts, CPU(cpu)->interrupt_request); =20 if (locked) { diff --git a/hw/ppc/trace-events b/hw/ppc/trace-events index a07d5aca0f..956938ebcd 100644 --- a/hw/ppc/trace-events +++ b/hw/ppc/trace-events @@ -127,7 +127,7 @@ ppc40x_set_tb_clk(uint32_t value) "new frequency %" PRI= u32 ppc40x_timers_init(uint32_t value) "frequency %" PRIu32 =20 ppc_irq_set(void *env, uint32_t pin, uint32_t level) "env [%p] pin %d leve= l %d" -ppc_irq_set_exit(void *env, uint32_t n_IRQ, uint32_t level, uint32_t pendi= ng, uint32_t request) "env [%p] n_IRQ %d level %d =3D> pending 0x%08" PRIx3= 2 " req 0x%08" PRIx32 +ppc_irq_set_exit(void *env, uint32_t irq, uint32_t level, uint32_t pending= , uint32_t request) "env [%p] irq 0x%05" PRIx32 " level %d =3D> pending 0x%= 08" PRIx32 " req 0x%08" PRIx32 ppc_irq_set_state(const char *name, uint32_t level) "\"%s\" level %d" ppc_irq_reset(const char *name) "%s" ppc_irq_cpu(const char *action) "%s" diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index cca6c4e51c..2433756973 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2416,27 +2416,27 @@ enum { /* Hardware exceptions definitions */ enum { /* External hardware exception sources */ - PPC_INTERRUPT_RESET =3D 0, /* Reset exception = */ - PPC_INTERRUPT_WAKEUP, /* Wakeup exception = */ - PPC_INTERRUPT_MCK, /* Machine check exception = */ - PPC_INTERRUPT_EXT, /* External interrupt = */ - PPC_INTERRUPT_SMI, /* System management interrupt = */ - PPC_INTERRUPT_CEXT, /* Critical external interrupt = */ - PPC_INTERRUPT_DEBUG, /* External debug exception = */ - PPC_INTERRUPT_THERM, /* Thermal exception = */ + PPC_INTERRUPT_RESET =3D 0x00001, /* Reset exception = */ + PPC_INTERRUPT_WAKEUP =3D 0x00002, /* Wakeup exception = */ + PPC_INTERRUPT_MCK =3D 0x00004, /* Machine check exception = */ + PPC_INTERRUPT_EXT =3D 0x00008, /* External interrupt = */ + PPC_INTERRUPT_SMI =3D 0x00010, /* System management interrupt = */ + PPC_INTERRUPT_CEXT =3D 0x00020, /* Critical external interrupt = */ + PPC_INTERRUPT_DEBUG =3D 0x00040, /* External debug exception = */ + PPC_INTERRUPT_THERM =3D 0x00080, /* Thermal exception = */ /* Internal hardware exception sources */ - PPC_INTERRUPT_DECR, /* Decrementer exception = */ - PPC_INTERRUPT_HDECR, /* Hypervisor decrementer exception = */ - PPC_INTERRUPT_PIT, /* Programmable interval timer interrupt= */ - PPC_INTERRUPT_FIT, /* Fixed interval timer interrupt = */ - PPC_INTERRUPT_WDT, /* Watchdog timer interrupt = */ - PPC_INTERRUPT_CDOORBELL, /* Critical doorbell interrupt = */ - PPC_INTERRUPT_DOORBELL, /* Doorbell interrupt = */ - PPC_INTERRUPT_PERFM, /* Performance monitor interrupt = */ - PPC_INTERRUPT_HMI, /* Hypervisor Maintenance interrupt */ - PPC_INTERRUPT_HDOORBELL, /* Hypervisor Doorbell interrupt = */ - PPC_INTERRUPT_HVIRT, /* Hypervisor virtualization interrupt = */ - PPC_INTERRUPT_EBB, /* Event-based Branch exception = */ + PPC_INTERRUPT_DECR =3D 0x00100, /* Decrementer exception = */ + PPC_INTERRUPT_HDECR =3D 0x00200, /* Hypervisor decrementer excepti= on */ + PPC_INTERRUPT_PIT =3D 0x00400, /* Programmable interval timer in= t. */ + PPC_INTERRUPT_FIT =3D 0x00800, /* Fixed interval timer interrupt= */ + PPC_INTERRUPT_WDT =3D 0x01000, /* Watchdog timer interrupt = */ + PPC_INTERRUPT_CDOORBELL =3D 0x02000, /* Critical doorbell interrupt = */ + PPC_INTERRUPT_DOORBELL =3D 0x04000, /* Doorbell interrupt = */ + PPC_INTERRUPT_PERFM =3D 0x08000, /* Performance monitor interrupt = */ + PPC_INTERRUPT_HMI =3D 0x10000, /* Hypervisor Maintenance interru= pt */ + PPC_INTERRUPT_HDOORBELL =3D 0x20000, /* Hypervisor Doorbell interrupt = */ + PPC_INTERRUPT_HVIRT =3D 0x40000, /* Hypervisor virtualization inte= rrupt */ + PPC_INTERRUPT_EBB =3D 0x80000, /* Event-based Branch exception = */ }; =20 /* Processor Compatibility mask (PCR) */ diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 335351c226..07171c679c 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -5969,23 +5969,23 @@ static bool cpu_has_work_POWER7(CPUState *cs) if (!(cs->interrupt_request & CPU_INTERRUPT_HARD)) { return false; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_EXT)) && + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && (env->spr[SPR_LPCR] & LPCR_P7_PECE0)) { return true; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_DECR)) && + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && (env->spr[SPR_LPCR] & LPCR_P7_PECE1)) { return true; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_MCK)) && + if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { return true; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_HMI)) && + if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { return true; } - if (env->pending_interrupts & (1u << PPC_INTERRUPT_RESET)) { + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { return true; } return false; @@ -6142,31 +6142,31 @@ static bool cpu_has_work_POWER8(CPUState *cs) if (!(cs->interrupt_request & CPU_INTERRUPT_HARD)) { return false; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_EXT)) && + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && (env->spr[SPR_LPCR] & LPCR_P8_PECE2)) { return true; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_DECR)) && + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && (env->spr[SPR_LPCR] & LPCR_P8_PECE3)) { return true; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_MCK)) && + if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { return true; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_HMI)) && + if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { return true; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_DOORBELL)) && + if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && (env->spr[SPR_LPCR] & LPCR_P8_PECE0)) { return true; } - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_HDOORBELL)) && + if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && (env->spr[SPR_LPCR] & LPCR_P8_PECE1)) { return true; } - if (env->pending_interrupts & (1u << PPC_INTERRUPT_RESET)) { + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { return true; } return false; @@ -6368,7 +6368,7 @@ static bool cpu_has_work_POWER9(CPUState *cs) return true; } /* External Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_EXT)) && + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && (env->spr[SPR_LPCR] & LPCR_EEE)) { bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); if (!heic || !FIELD_EX64_HV(env->msr) || @@ -6377,31 +6377,31 @@ static bool cpu_has_work_POWER9(CPUState *cs) } } /* Decrementer Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_DECR)) && + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && (env->spr[SPR_LPCR] & LPCR_DEE)) { return true; } /* Machine Check or Hypervisor Maintenance Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_MCK | - 1u << PPC_INTERRUPT_HMI)) && (env->spr[SPR_LPCR] & LPCR_OEE)) { + if ((env->pending_interrupts & (PPC_INTERRUPT_MCK | PPC_INTERRUPT_= HMI)) + && (env->spr[SPR_LPCR] & LPCR_OEE)) { return true; } /* Privileged Doorbell Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_DOORBELL)) && + if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && (env->spr[SPR_LPCR] & LPCR_PDEE)) { return true; } /* Hypervisor Doorbell Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_HDOORBELL)) && + if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && (env->spr[SPR_LPCR] & LPCR_HDEE)) { return true; } /* Hypervisor virtualization exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_HVIRT)) && + if ((env->pending_interrupts & PPC_INTERRUPT_HVIRT) && (env->spr[SPR_LPCR] & LPCR_HVEE)) { return true; } - if (env->pending_interrupts & (1u << PPC_INTERRUPT_RESET)) { + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { return true; } return false; @@ -6601,7 +6601,7 @@ static bool cpu_has_work_POWER10(CPUState *cs) return true; } /* External Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_EXT)) && + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && (env->spr[SPR_LPCR] & LPCR_EEE)) { bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); if (!heic || !FIELD_EX64_HV(env->msr) || @@ -6610,31 +6610,31 @@ static bool cpu_has_work_POWER10(CPUState *cs) } } /* Decrementer Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_DECR)) && + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && (env->spr[SPR_LPCR] & LPCR_DEE)) { return true; } /* Machine Check or Hypervisor Maintenance Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_MCK | - 1u << PPC_INTERRUPT_HMI)) && (env->spr[SPR_LPCR] & LPCR_OEE)) { + if ((env->pending_interrupts & (PPC_INTERRUPT_MCK | PPC_INTERRUPT_= HMI)) + && (env->spr[SPR_LPCR] & LPCR_OEE)) { return true; } /* Privileged Doorbell Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_DOORBELL)) && + if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && (env->spr[SPR_LPCR] & LPCR_PDEE)) { return true; } /* Hypervisor Doorbell Exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_HDOORBELL)) && + if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && (env->spr[SPR_LPCR] & LPCR_HDEE)) { return true; } /* Hypervisor virtualization exception */ - if ((env->pending_interrupts & (1u << PPC_INTERRUPT_HVIRT)) && + if ((env->pending_interrupts & PPC_INTERRUPT_HVIRT) && (env->spr[SPR_LPCR] & LPCR_HVEE)) { return true; } - if (env->pending_interrupts & (1u << PPC_INTERRUPT_RESET)) { + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { return true; } return false; diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 43f2480e94..d168789fc0 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1689,21 +1689,21 @@ static void ppc_hw_interrupt(CPUPPCState *env) bool async_deliver; =20 /* External reset */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_RESET)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_RESET); + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; powerpc_excp(cpu, POWERPC_EXCP_RESET); return; } /* Machine check exception */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_MCK)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_MCK); + if (env->pending_interrupts & PPC_INTERRUPT_MCK) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; powerpc_excp(cpu, POWERPC_EXCP_MCHECK); return; } #if 0 /* TODO */ /* External debug exception */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_DEBUG)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_DEBUG); + if (env->pending_interrupts & PPC_INTERRUPT_DEBUG) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_DEBUG; powerpc_excp(cpu, POWERPC_EXCP_DEBUG); return; } @@ -1718,19 +1718,19 @@ static void ppc_hw_interrupt(CPUPPCState *env) async_deliver =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sres= et; =20 /* Hypervisor decrementer exception */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_HDECR)) { + if (env->pending_interrupts & PPC_INTERRUPT_HDECR) { /* LPCR will be clear when not supported so this will work */ bool hdice =3D !!(env->spr[SPR_LPCR] & LPCR_HDICE); if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { /* HDEC clears on delivery */ - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_HDECR); + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDECR; powerpc_excp(cpu, POWERPC_EXCP_HDECR); return; } } =20 /* Hypervisor virtualization interrupt */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_HVIRT)) { + if (env->pending_interrupts & PPC_INTERRUPT_HVIRT) { /* LPCR will be clear when not supported so this will work */ bool hvice =3D !!(env->spr[SPR_LPCR] & LPCR_HVICE); if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { @@ -1740,7 +1740,7 @@ static void ppc_hw_interrupt(CPUPPCState *env) } =20 /* External interrupt can ignore MSR:EE under some circumstances */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_EXT)) { + if (env->pending_interrupts & PPC_INTERRUPT_EXT) { bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); /* HEIC blocks delivery to the hypervisor */ @@ -1757,45 +1757,45 @@ static void ppc_hw_interrupt(CPUPPCState *env) } if (FIELD_EX64(env->msr, MSR, CE)) { /* External critical interrupt */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_CEXT)) { + if (env->pending_interrupts & PPC_INTERRUPT_CEXT) { powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); return; } } if (async_deliver !=3D 0) { /* Watchdog timer on embedded PowerPC */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_WDT)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_WDT); + if (env->pending_interrupts & PPC_INTERRUPT_WDT) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; powerpc_excp(cpu, POWERPC_EXCP_WDT); return; } - if (env->pending_interrupts & (1 << PPC_INTERRUPT_CDOORBELL)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_CDOORBELL); + if (env->pending_interrupts & PPC_INTERRUPT_CDOORBELL) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; powerpc_excp(cpu, POWERPC_EXCP_DOORCI); return; } /* Fixed interval timer on embedded PowerPC */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_FIT)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_FIT); + if (env->pending_interrupts & PPC_INTERRUPT_FIT) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; powerpc_excp(cpu, POWERPC_EXCP_FIT); return; } /* Programmable interval timer on embedded PowerPC */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_PIT)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_PIT); + if (env->pending_interrupts & PPC_INTERRUPT_PIT) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; powerpc_excp(cpu, POWERPC_EXCP_PIT); return; } /* Decrementer exception */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_DECR)) { + if (env->pending_interrupts & PPC_INTERRUPT_DECR) { if (ppc_decr_clear_on_delivery(env)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_DECR); + env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; } powerpc_excp(cpu, POWERPC_EXCP_DECR); return; } - if (env->pending_interrupts & (1 << PPC_INTERRUPT_DOORBELL)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_DOORBELL); + if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; if (is_book3s_arch2x(env)) { powerpc_excp(cpu, POWERPC_EXCP_SDOOR); } else { @@ -1803,31 +1803,31 @@ static void ppc_hw_interrupt(CPUPPCState *env) } return; } - if (env->pending_interrupts & (1 << PPC_INTERRUPT_HDOORBELL)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_HDOORBELL); + if (env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; powerpc_excp(cpu, POWERPC_EXCP_SDOOR_HV); return; } - if (env->pending_interrupts & (1 << PPC_INTERRUPT_PERFM)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_PERFM); + if (env->pending_interrupts & PPC_INTERRUPT_PERFM) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; powerpc_excp(cpu, POWERPC_EXCP_PERFM); return; } /* Thermal interrupt */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_THERM)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_THERM); + if (env->pending_interrupts & PPC_INTERRUPT_THERM) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; powerpc_excp(cpu, POWERPC_EXCP_THERM); return; } /* EBB exception */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_EBB)) { + if (env->pending_interrupts & PPC_INTERRUPT_EBB) { /* * EBB exception must be taken in problem state and * with BESCR_GE set. */ if (FIELD_EX64(env->msr, MSR, PR) && (env->spr[SPR_BESCR] & BESCR_GE)) { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_EBB); + env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; =20 if (env->spr[SPR_BESCR] & BESCR_PMEO) { powerpc_excp(cpu, POWERPC_EXCP_PERFM_EBB); @@ -2104,7 +2104,7 @@ static void do_ebb(CPUPPCState *env, int ebb_excp) if (FIELD_EX64(env->msr, MSR, PR)) { powerpc_excp(cpu, ebb_excp); } else { - env->pending_interrupts |=3D 1 << PPC_INTERRUPT_EBB; + env->pending_interrupts |=3D PPC_INTERRUPT_EBB; cpu_interrupt(cs, CPU_INTERRUPT_HARD); } } @@ -2298,7 +2298,7 @@ void helper_msgclr(CPUPPCState *env, target_ulong rb) return; } =20 - env->pending_interrupts &=3D ~(1 << irq); + env->pending_interrupts &=3D ~irq; } =20 void helper_msgsnd(target_ulong rb) @@ -2317,7 +2317,7 @@ void helper_msgsnd(target_ulong rb) CPUPPCState *cenv =3D &cpu->env; =20 if ((rb & DBELL_BRDCAST) || (cenv->spr[SPR_BOOKE_PIR] =3D=3D pir))= { - cenv->pending_interrupts |=3D 1 << irq; + cenv->pending_interrupts |=3D irq; cpu_interrupt(cs, CPU_INTERRUPT_HARD); } } @@ -2342,7 +2342,7 @@ void helper_book3s_msgclr(CPUPPCState *env, target_ul= ong rb) return; } =20 - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_HDOORBELL); + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; } =20 static void book3s_msgsnd_common(int pir, int irq) @@ -2356,7 +2356,7 @@ static void book3s_msgsnd_common(int pir, int irq) =20 /* TODO: broadcast message to all threads of the same processor */ if (cenv->spr_cb[SPR_PIR].default_value =3D=3D pir) { - cenv->pending_interrupts |=3D 1 << irq; + cenv->pending_interrupts |=3D irq; cpu_interrupt(cs, CPU_INTERRUPT_HARD); } } @@ -2383,7 +2383,7 @@ void helper_book3s_msgclrp(CPUPPCState *env, target_u= long rb) return; } =20 - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_DOORBELL); + env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; } =20 /* diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index b0a5e7ce76..05e35572bc 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -163,7 +163,7 @@ target_ulong helper_load_dpdes(CPUPPCState *env) helper_hfscr_facility_check(env, HFSCR_MSGP, "load DPDES", HFSCR_IC_MS= GP); =20 /* TODO: TCG supports only one thread */ - if (env->pending_interrupts & (1 << PPC_INTERRUPT_DOORBELL)) { + if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { dpdes =3D 1; } =20 @@ -185,10 +185,10 @@ void helper_store_dpdes(CPUPPCState *env, target_ulon= g val) } =20 if (val & 0x1) { - env->pending_interrupts |=3D 1 << PPC_INTERRUPT_DOORBELL; + env->pending_interrupts |=3D PPC_INTERRUPT_DOORBELL; cpu_interrupt(cs, CPU_INTERRUPT_HARD); } else { - env->pending_interrupts &=3D ~(1 << PPC_INTERRUPT_DOORBELL); + env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; } } #endif /* defined(TARGET_PPC64) */ --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975616; cv=none; d=zohomail.com; s=zohoarc; b=IKlrCNuL9UMroHbFnBaCKP5VqXSYYcf/3vjWus3/yqS8HKIcZyhkDCSb6wVIMhO8SNER3rmr6oZXCap/S4EyNHc4Spe4kK2jfvOqWR2E9hdP5l1NOOxYYMIF6kebVspEwyDgMuBoBFLCPgnwE8DmrVqrECRE+Ru0vnXfdAErkRY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975616; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=shfp/ul/SbRl9tJeOw47WP6vvR8ncB9UHRn3Wy75kJc=; b=X8Qt76ChNqayY4yKM5XthaYPFasH7RICqyxymJ1Rxef+zB0BzCYcGMaGWkQ7FcBWGnwCEdXWCJ36bPztl3y7nTAaFlewQP66KRm8wRNtcT9a4oMapCAbVj76+6JGQlodNc0he08XBaLSevJK8eVUmYw0tNagSYN5goOu9U+IrCw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975616678484.7059993129494; Fri, 28 Oct 2022 09:46:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQr-0007n0-5F; Fri, 28 Oct 2022 12:42:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQG-0002YY-Hh; Fri, 28 Oct 2022 12:41:32 -0400 Received: from mail-oi1-x230.google.com ([2607:f8b0:4864:20::230]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQC-0008OU-1p; Fri, 28 Oct 2022 12:41:32 -0400 Received: by mail-oi1-x230.google.com with SMTP id s206so6721684oie.3; Fri, 28 Oct 2022 09:41:26 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=shfp/ul/SbRl9tJeOw47WP6vvR8ncB9UHRn3Wy75kJc=; b=Ck5KcSBFUZfpk6cxPh7rtspxMCe/O5eoKU8yrnZgBjLRRcw3PxiXR/oYX5X5iuNfQw mHDfmX8Gp4PlfaNpJeCScA0W2/cGey1KCyPHLGZ/SEtGSiG9zItK4ZiRUIGWGxgolDA4 +1t8sHmC22Nfu0QekM8TykRbsTKd5eXPYS4+hsouqMMke8z59LuB24GICLQBENQCIglR gNWZD4wUOEjFMlRyW+jthkGTpxkBIPBP6AuOt+P8AC19VpYzkswKKi4LA2ArIiV4ZztH A/Z06Rpd3JaMGKcvfuf6XwphS/ZtEpc7TDUyLzxIEjiTSizRkVi5feT9uhozMHjUYAIS 4WWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=shfp/ul/SbRl9tJeOw47WP6vvR8ncB9UHRn3Wy75kJc=; b=yxF09NI2pv9C9oOYjkL+q4dsycxSasdEssEiL29six520vaGRzNqKmlu5M2vN43oky ED8cJeCb4FVBJb9JuPjNmbzGnn6qZ3kR1aRk41sAu233C+JH0qZErMIiK0qqL9OV/jyq ClYo9mPfBqBf4LV6lxNBez78r+8oGYKOTwPtt8t/74jTnSUA/O/jtRWC4VR1kuTCVAd5 rojslmgmi0ZwR465uxAMaz7bQ1GqV+821rNjQZzqAb2eSgSN+32SiSn4BXzDmwGBx+5a ZjN5O05hf+ElZG8zFt3b2YMNOwIefy+/MDU9pK9/7Yd8xYI5ZlcPa4PicprTAc45p2ru uZmQ== X-Gm-Message-State: ACrzQf37Obo3xED0I09MER0jQIjSSAp93x16ORKdZaocrl1kA2xsQ82y MnQzmFgYi6XmLzm+hTQI0mzZV1xBRJbaRg== X-Google-Smtp-Source: AMsMyM6gHK3mZov/UBj0tx+3XpOVe3/Hsyjj8u91ETQFy5VibfxbFTZV3ORdDj5wJ3zDkCAzM/80Qg== X-Received: by 2002:a54:4196:0:b0:355:15ff:b43 with SMTP id 22-20020a544196000000b0035515ff0b43mr8932134oiy.200.1666975285538; Fri, 28 Oct 2022 09:41:25 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 20/62] target/ppc: always use ppc_set_irq to set env->pending_interrupts Date: Fri, 28 Oct 2022 13:39:09 -0300 Message-Id: <20221028163951.810456-21-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::230; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x230.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975618639100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Use ppc_set_irq to raise/clear interrupts to ensure CPU_INTERRUPT_HARD will be set/reset accordingly. Reviewed-by: Fabiano Rosas Signed-off-by: Matheus Ferst Message-Id: <20221011204829.1641124-3-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 17 +++++++---------- target/ppc/misc_helper.c | 9 ++------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index d168789fc0..37d352619b 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -23,6 +23,7 @@ #include "exec/exec-all.h" #include "internal.h" #include "helper_regs.h" +#include "hw/ppc/ppc.h" =20 #include "trace.h" =20 @@ -2086,7 +2087,6 @@ void helper_rfebb(CPUPPCState *env, target_ulong s) static void do_ebb(CPUPPCState *env, int ebb_excp) { PowerPCCPU *cpu =3D env_archcpu(env); - CPUState *cs =3D CPU(cpu); =20 /* * FSCR_EBB and FSCR_IC_EBB are the same bits used with @@ -2104,8 +2104,7 @@ static void do_ebb(CPUPPCState *env, int ebb_excp) if (FIELD_EX64(env->msr, MSR, PR)) { powerpc_excp(cpu, ebb_excp); } else { - env->pending_interrupts |=3D PPC_INTERRUPT_EBB; - cpu_interrupt(cs, CPU_INTERRUPT_HARD); + ppc_set_irq(cpu, PPC_INTERRUPT_EBB, 1); } } =20 @@ -2298,7 +2297,7 @@ void helper_msgclr(CPUPPCState *env, target_ulong rb) return; } =20 - env->pending_interrupts &=3D ~irq; + ppc_set_irq(env_archcpu(env), irq, 0); } =20 void helper_msgsnd(target_ulong rb) @@ -2317,8 +2316,7 @@ void helper_msgsnd(target_ulong rb) CPUPPCState *cenv =3D &cpu->env; =20 if ((rb & DBELL_BRDCAST) || (cenv->spr[SPR_BOOKE_PIR] =3D=3D pir))= { - cenv->pending_interrupts |=3D irq; - cpu_interrupt(cs, CPU_INTERRUPT_HARD); + ppc_set_irq(cpu, irq, 1); } } qemu_mutex_unlock_iothread(); @@ -2342,7 +2340,7 @@ void helper_book3s_msgclr(CPUPPCState *env, target_ul= ong rb) return; } =20 - env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; + ppc_set_irq(env_archcpu(env), PPC_INTERRUPT_HDOORBELL, 0); } =20 static void book3s_msgsnd_common(int pir, int irq) @@ -2356,8 +2354,7 @@ static void book3s_msgsnd_common(int pir, int irq) =20 /* TODO: broadcast message to all threads of the same processor */ if (cenv->spr_cb[SPR_PIR].default_value =3D=3D pir) { - cenv->pending_interrupts |=3D irq; - cpu_interrupt(cs, CPU_INTERRUPT_HARD); + ppc_set_irq(cpu, irq, 1); } } qemu_mutex_unlock_iothread(); @@ -2383,7 +2380,7 @@ void helper_book3s_msgclrp(CPUPPCState *env, target_u= long rb) return; } =20 - env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; + ppc_set_irq(env_archcpu(env), PPC_INTERRUPT_HDOORBELL, 0); } =20 /* diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index 05e35572bc..a9bc1522e2 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -25,6 +25,7 @@ #include "qemu/error-report.h" #include "qemu/main-loop.h" #include "mmu-book3s-v3.h" +#include "hw/ppc/ppc.h" =20 #include "helper_regs.h" =20 @@ -173,7 +174,6 @@ target_ulong helper_load_dpdes(CPUPPCState *env) void helper_store_dpdes(CPUPPCState *env, target_ulong val) { PowerPCCPU *cpu =3D env_archcpu(env); - CPUState *cs =3D CPU(cpu); =20 helper_hfscr_facility_check(env, HFSCR_MSGP, "store DPDES", HFSCR_IC_M= SGP); =20 @@ -184,12 +184,7 @@ void helper_store_dpdes(CPUPPCState *env, target_ulong= val) return; } =20 - if (val & 0x1) { - env->pending_interrupts |=3D PPC_INTERRUPT_DOORBELL; - cpu_interrupt(cs, CPU_INTERRUPT_HARD); - } else { - env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; - } + ppc_set_irq(cpu, PPC_INTERRUPT_DOORBELL, val & 0x1); } #endif /* defined(TARGET_PPC64) */ =20 --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666976018; cv=none; d=zohomail.com; s=zohoarc; b=FqL2tDcjqcQwuhFHzNKbz8nBXA5VRRTbdFe8d2GgG5Ayw8cE+9iXQLsIo+cMXOV4+1tCQRBN8uZKH6GAw8O1HkK3lZClG6Ow7liMXzPqXv/+xQu6I3QAIH1T35pbUdzc5ppHcA5dJL54EPqbBV6ff7V36SBbJ2CkzFOnCfL+hLY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666976018; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=GjKm8T9F0wZnGFU3pwg/oPVDVSeYkx0NLz5pDnDIRVw=; b=CKzIx6EW6KTui5BmOav6mfPEpfEJw+osMkrO+OJh2yf9QMaxfnR0kFZZEDJkT4+Or0nd52kRW4PwEYIV3wB8NdjfhlbEYVxrDzNSGaaOk6yM2iWCEWYvU244t5202KIyFfYSccuzjbidUTCjU1zSGJsnhrpz39mmIvlcx1zjVsw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666976018159141.8236627378168; Fri, 28 Oct 2022 09:53:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSQu-0008GW-Ai; Fri, 28 Oct 2022 12:42:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQI-0002vV-F1; Fri, 28 Oct 2022 12:41:34 -0400 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQF-0008Es-Og; Fri, 28 Oct 2022 12:41:34 -0400 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-13ae8117023so6859865fac.9; Fri, 28 Oct 2022 09:41:29 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GjKm8T9F0wZnGFU3pwg/oPVDVSeYkx0NLz5pDnDIRVw=; b=Y1gGQi7FDXGzZPBoGEjIR222lA8bbWZdN6g5kmq7nLjTZ2CKBvF6t8w2vMI2uGB3i6 59IHHQhmUHlLK06cbcfPyAXbu9uHZjBLyhZJ9ZTKNxSNqPx0cwCOwdkC/fMp7nGU1GZs G2FQyhuQHit+uxa3RgrDiJyiJKUjpwYsAC68a5ZTy7eZS0K9/PQOGYu75STvdBQWR4ot D/fjDTd9iW33tW+eukQEUvkehW+9LZ0KNw0jjUNvRm7udfCYeQ8qs0pI62TKiZ0BCwY8 ZoQ8gIa5t+jXRNtBdjOX8jpPqPKvo04rYpcwcCbjMtVtWgKhNddEBTRV0Wb9p7onkEPH L8RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GjKm8T9F0wZnGFU3pwg/oPVDVSeYkx0NLz5pDnDIRVw=; b=R9Zc7JYS63GeUXuGU6pyZaz4kFmzYIKHwXa5TNm0R+YwGw2iHos3Er4hsP9YqbDEKT n27/bJkjpeWKyg1uB4c/W+QfAwd9xFLxaUuHe4GlfVuNEAJEtXb9tW/OWEJQvVqNtnQB HNXZdavu4ypkNHRdvRosOq3IKBdobGXo3oOzaIzJ0awmvtw7mAxgK7+DQ0CcU9nKZpFF 5eAqL1+8iQ3u3uyZ49ngEsoi1iqZBr1YOK6wL3LqkJHS8+uiPUdXMC93mUq+0nNBAIGK 6UHhEHNcQcRribFU5VSbUGlGdamAUspf5PJ2R+YjwWFRdU2CxQYEIS0pNxrS3GYlkBz7 X0BA== X-Gm-Message-State: ACrzQf0LCGC1WN+tk4sxizavmiXLbkb4997CO3pmjcHTp/snovAEtgFO n9NphTxEJKk7BQbhWTjzjWCsmByr+ok7BA== X-Google-Smtp-Source: AMsMyM40urW9SxG+CMSxyUvevFF1WJP74xXgFumN1rLH7n04bf9xK120Bc5LgdLokMXelDA7q1FYAQ== X-Received: by 2002:a05:6870:b414:b0:130:ea11:761c with SMTP id x20-20020a056870b41400b00130ea11761cmr37080oap.62.1666975289272; Fri, 28 Oct 2022 09:41:29 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 21/62] target/ppc: split interrupt masking and delivery from ppc_hw_interrupt Date: Fri, 28 Oct 2022 13:39:10 -0300 Message-Id: <20221028163951.810456-22-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::29; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x29.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666976019437100002 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Split ppc_hw_interrupt into an interrupt masking method, ppc_next_unmasked_interrupt, and an interrupt processing method, ppc_deliver_interrupt. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-4-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 201 ++++++++++++++++++++++++--------------- 1 file changed, 125 insertions(+), 76 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 37d352619b..759bad582d 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1684,29 +1684,22 @@ void ppc_cpu_do_interrupt(CPUState *cs) powerpc_excp(cpu, cs->exception_index); } =20 -static void ppc_hw_interrupt(CPUPPCState *env) +static int ppc_next_unmasked_interrupt(CPUPPCState *env) { - PowerPCCPU *cpu =3D env_archcpu(env); bool async_deliver; =20 /* External reset */ if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; - powerpc_excp(cpu, POWERPC_EXCP_RESET); - return; + return PPC_INTERRUPT_RESET; } /* Machine check exception */ if (env->pending_interrupts & PPC_INTERRUPT_MCK) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; - powerpc_excp(cpu, POWERPC_EXCP_MCHECK); - return; + return PPC_INTERRUPT_MCK; } #if 0 /* TODO */ /* External debug exception */ if (env->pending_interrupts & PPC_INTERRUPT_DEBUG) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_DEBUG; - powerpc_excp(cpu, POWERPC_EXCP_DEBUG); - return; + return PPC_INTERRUPT_DEBUG; } #endif =20 @@ -1724,9 +1717,7 @@ static void ppc_hw_interrupt(CPUPPCState *env) bool hdice =3D !!(env->spr[SPR_LPCR] & LPCR_HDICE); if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { /* HDEC clears on delivery */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_HDECR; - powerpc_excp(cpu, POWERPC_EXCP_HDECR); - return; + return PPC_INTERRUPT_HDECR; } } =20 @@ -1735,8 +1726,7 @@ static void ppc_hw_interrupt(CPUPPCState *env) /* LPCR will be clear when not supported so this will work */ bool hvice =3D !!(env->spr[SPR_LPCR] & LPCR_HVICE); if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { - powerpc_excp(cpu, POWERPC_EXCP_HVIRT); - return; + return PPC_INTERRUPT_HVIRT; } } =20 @@ -1748,77 +1738,47 @@ static void ppc_hw_interrupt(CPUPPCState *env) if ((async_deliver && !(heic && FIELD_EX64_HV(env->msr) && !FIELD_EX64(env->msr, MSR, PR))) || (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { - if (books_vhyp_promotes_external_to_hvirt(cpu)) { - powerpc_excp(cpu, POWERPC_EXCP_HVIRT); - } else { - powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL); - } - return; + return PPC_INTERRUPT_EXT; } } if (FIELD_EX64(env->msr, MSR, CE)) { /* External critical interrupt */ if (env->pending_interrupts & PPC_INTERRUPT_CEXT) { - powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); - return; + return PPC_INTERRUPT_CEXT; } } if (async_deliver !=3D 0) { /* Watchdog timer on embedded PowerPC */ if (env->pending_interrupts & PPC_INTERRUPT_WDT) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; - powerpc_excp(cpu, POWERPC_EXCP_WDT); - return; + return PPC_INTERRUPT_WDT; } if (env->pending_interrupts & PPC_INTERRUPT_CDOORBELL) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; - powerpc_excp(cpu, POWERPC_EXCP_DOORCI); - return; + return PPC_INTERRUPT_CDOORBELL; } /* Fixed interval timer on embedded PowerPC */ if (env->pending_interrupts & PPC_INTERRUPT_FIT) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; - powerpc_excp(cpu, POWERPC_EXCP_FIT); - return; + return PPC_INTERRUPT_FIT; } /* Programmable interval timer on embedded PowerPC */ if (env->pending_interrupts & PPC_INTERRUPT_PIT) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; - powerpc_excp(cpu, POWERPC_EXCP_PIT); - return; + return PPC_INTERRUPT_PIT; } /* Decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_DECR) { - if (ppc_decr_clear_on_delivery(env)) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; - } - powerpc_excp(cpu, POWERPC_EXCP_DECR); - return; + return PPC_INTERRUPT_DECR; } if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; - if (is_book3s_arch2x(env)) { - powerpc_excp(cpu, POWERPC_EXCP_SDOOR); - } else { - powerpc_excp(cpu, POWERPC_EXCP_DOORI); - } - return; + return PPC_INTERRUPT_DOORBELL; } if (env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; - powerpc_excp(cpu, POWERPC_EXCP_SDOOR_HV); - return; + return PPC_INTERRUPT_HDOORBELL; } if (env->pending_interrupts & PPC_INTERRUPT_PERFM) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; - powerpc_excp(cpu, POWERPC_EXCP_PERFM); - return; + return PPC_INTERRUPT_PERFM; } /* Thermal interrupt */ if (env->pending_interrupts & PPC_INTERRUPT_THERM) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; - powerpc_excp(cpu, POWERPC_EXCP_THERM); - return; + return PPC_INTERRUPT_THERM; } /* EBB exception */ if (env->pending_interrupts & PPC_INTERRUPT_EBB) { @@ -1828,20 +1788,100 @@ static void ppc_hw_interrupt(CPUPPCState *env) */ if (FIELD_EX64(env->msr, MSR, PR) && (env->spr[SPR_BESCR] & BESCR_GE)) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; - - if (env->spr[SPR_BESCR] & BESCR_PMEO) { - powerpc_excp(cpu, POWERPC_EXCP_PERFM_EBB); - } else if (env->spr[SPR_BESCR] & BESCR_EEO) { - powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL_EBB); - } - - return; + return PPC_INTERRUPT_EBB; } } } =20 - if (env->resume_as_sreset) { + return 0; +} + +static void ppc_deliver_interrupt(CPUPPCState *env, int interrupt) +{ + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + + switch (interrupt) { + case PPC_INTERRUPT_RESET: /* External reset */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; + powerpc_excp(cpu, POWERPC_EXCP_RESET); + break; + case PPC_INTERRUPT_MCK: /* Machine check exception */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; + powerpc_excp(cpu, POWERPC_EXCP_MCHECK); + break; + + case PPC_INTERRUPT_HDECR: /* Hypervisor decrementer exception */ + /* HDEC clears on delivery */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDECR; + powerpc_excp(cpu, POWERPC_EXCP_HDECR); + break; + case PPC_INTERRUPT_HVIRT: /* Hypervisor virtualization interrupt */ + powerpc_excp(cpu, POWERPC_EXCP_HVIRT); + break; + + case PPC_INTERRUPT_EXT: + if (books_vhyp_promotes_external_to_hvirt(cpu)) { + powerpc_excp(cpu, POWERPC_EXCP_HVIRT); + } else { + powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL); + } + break; + case PPC_INTERRUPT_CEXT: /* External critical interrupt */ + powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); + break; + + case PPC_INTERRUPT_WDT: /* Watchdog timer on embedded PowerPC */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; + powerpc_excp(cpu, POWERPC_EXCP_WDT); + break; + case PPC_INTERRUPT_CDOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; + powerpc_excp(cpu, POWERPC_EXCP_DOORCI); + break; + case PPC_INTERRUPT_FIT: /* Fixed interval timer on embedded PowerPC */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; + powerpc_excp(cpu, POWERPC_EXCP_FIT); + break; + case PPC_INTERRUPT_PIT: /* Programmable interval timer on embedded ppc= */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; + powerpc_excp(cpu, POWERPC_EXCP_PIT); + break; + case PPC_INTERRUPT_DECR: /* Decrementer exception */ + if (ppc_decr_clear_on_delivery(env)) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; + } + powerpc_excp(cpu, POWERPC_EXCP_DECR); + break; + case PPC_INTERRUPT_DOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; + if (is_book3s_arch2x(env)) { + powerpc_excp(cpu, POWERPC_EXCP_SDOOR); + } else { + powerpc_excp(cpu, POWERPC_EXCP_DOORI); + } + break; + case PPC_INTERRUPT_HDOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; + powerpc_excp(cpu, POWERPC_EXCP_SDOOR_HV); + break; + case PPC_INTERRUPT_PERFM: + env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; + powerpc_excp(cpu, POWERPC_EXCP_PERFM); + break; + case PPC_INTERRUPT_THERM: /* Thermal interrupt */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; + powerpc_excp(cpu, POWERPC_EXCP_THERM); + break; + case PPC_INTERRUPT_EBB: /* EBB exception */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; + if (env->spr[SPR_BESCR] & BESCR_PMEO) { + powerpc_excp(cpu, POWERPC_EXCP_PERFM_EBB); + } else if (env->spr[SPR_BESCR] & BESCR_EEO) { + powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL_EBB); + } + break; + case 0: /* * This is a bug ! It means that has_work took us out of halt with= out * anything to deliver while in a PM state that requires getting @@ -1853,8 +1893,10 @@ static void ppc_hw_interrupt(CPUPPCState *env) * It generally means a discrepancy between the wakeup conditions = in the * processor has_work implementation and the logic in this functio= n. */ - cpu_abort(env_cpu(env), - "Wakeup from PM state but interrupt Undelivered"); + assert(!env->resume_as_sreset); + break; + default: + cpu_abort(cs, "Invalid PowerPC interrupt %d. Aborting\n", interrup= t); } } =20 @@ -1890,15 +1932,22 @@ bool ppc_cpu_exec_interrupt(CPUState *cs, int inter= rupt_request) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); CPUPPCState *env =3D &cpu->env; + int interrupt; =20 - if (interrupt_request & CPU_INTERRUPT_HARD) { - ppc_hw_interrupt(env); - if (env->pending_interrupts =3D=3D 0) { - cs->interrupt_request &=3D ~CPU_INTERRUPT_HARD; - } - return true; + if ((interrupt_request & CPU_INTERRUPT_HARD) =3D=3D 0) { + return false; } - return false; + + interrupt =3D ppc_next_unmasked_interrupt(env); + if (interrupt =3D=3D 0) { + return false; + } + + ppc_deliver_interrupt(env, interrupt); + if (env->pending_interrupts =3D=3D 0) { + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); + } + return true; } =20 #endif /* !CONFIG_USER_ONLY */ --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975416; cv=none; d=zohomail.com; s=zohoarc; b=RvPv+PyGazG3Atx+TqBZ/FLr5GEwNDU67TBsxdHcbCFAxW4hMYNN2JEM/NUTMKO9RSG+Xkav6E6UF4IehNXk7VvjnCVT5+odxi4Ut6ommkMC7WU0voq+4tMDJEZGeHemWNe7ldDuyMXfdpFkEInDM8+Cn+hDdRWPzQhvGcQUYq4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975416; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=q0p/bdDLpqZSATFpFwneoMhlaXwAv9HtYRC1j37CbzY=; b=I2ENmZ/3zoZCWPsIYcn7O1qxava49QxwP1FQNG+uhvA2NKBx1JfffxFYBUDyhFk0nitDr5o5aSw7+83MxXlFeyQTxSdRmcK1Sk2Mw/ybCjsAePC3URnrSZ86Nor0DAnjHyyw93MmPhMS6dtB5A5BVjcKai7wHqyIgH2JGOgH8bo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975416608930.5412821156526; Fri, 28 Oct 2022 09:43:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRC-0002MZ-6B; Fri, 28 Oct 2022 12:42:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQK-0003Gx-OW; Fri, 28 Oct 2022 12:41:36 -0400 Received: from mail-ot1-x335.google.com ([2607:f8b0:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQJ-0008TR-4C; Fri, 28 Oct 2022 12:41:36 -0400 Received: by mail-ot1-x335.google.com with SMTP id 46-20020a9d0631000000b00666823da25fso3301154otn.0; Fri, 28 Oct 2022 09:41:34 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=q0p/bdDLpqZSATFpFwneoMhlaXwAv9HtYRC1j37CbzY=; b=E83k5bkPgruvAQgB11cKBp6ccivw5rKUaOQm0OT8rj6ytRAOH2PryG6lvy6vDW8cNS U4/9HvYwsC/a8ha1YLlNPykvd5oSWd2876H280S8FkXojJDOpj5BQQJqxrPYVV5vdaZO o7ED7CnRbWqvF2M7wdt0HHsPGoz/pdgY6MFFv/aNZedyb8W8JbY+mwcsVoOKV2pGNY7Q xPjcAng1CY9CQjlQxGomq5zXS8MhvdDpFg2jXk7ZBDWlzU4t9Z0Mgo2D2QZTwkcQAZi2 HNkGYx6ZczZewswvMI2MN+P8/NzFLhCAjxCXCxdmICfojjO4d3SCWrgSn9IR7IN7pe7C sDgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=q0p/bdDLpqZSATFpFwneoMhlaXwAv9HtYRC1j37CbzY=; b=wwkrIkObx3os1OdzMfCY2m9ZbP2XOKvBgwpPzEpnJ8VUC5oBzWjY/xFN8gDGyRtEjy M+hCAaRiDuvS/B830iPJ+Kvqae+hjrfV9zr4PvlXK66rFsqJ64zxga16zqPniS3RxIdF I1n69w5GvNaKN/jjv1tfz7W0WisEetBlQUCSASPW5F3PUzRwZtqfzJAHe0bxftNFEfHG vxldjZFLZ7SPBhk37MgJo/RwoXAV5D5acWJhBli1kDn+CEvalp2GuaU5BzYHLGFh4nzo KhImzIZ65SrF2Fdozs3hbApfkr75/2kbeMrod/mlXDP4lM68PNsI8ZjQehrKwMqECwf3 wJlQ== X-Gm-Message-State: ACrzQf09ZUFbhQBOMQhizvhMJ4pImRVNDfSCecM6gPvgZOzNxmidSEoC krI/OGrMt0/9Are3BxOiIvbOGjCemXgoFA== X-Google-Smtp-Source: AMsMyM7EqAy5z12fT/0x+l3ZjzSwdZD53phg4OkOx34wGoSFcEMJOb7HJ6MzcZ6kTpubULXJmxAOEg== X-Received: by 2002:a9d:4812:0:b0:66a:992e:676a with SMTP id c18-20020a9d4812000000b0066a992e676amr126565otf.86.1666975293518; Fri, 28 Oct 2022 09:41:33 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 22/62] target/ppc: prepare to split interrupt masking and delivery by excp_model Date: Fri, 28 Oct 2022 13:39:11 -0300 Message-Id: <20221028163951.810456-23-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::335; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x335.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975417569100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-5-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 759bad582d..0e89d2e15b 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1684,7 +1684,7 @@ void ppc_cpu_do_interrupt(CPUState *cs) powerpc_excp(cpu, cs->exception_index); } =20 -static int ppc_next_unmasked_interrupt(CPUPPCState *env) +static int ppc_next_unmasked_interrupt_generic(CPUPPCState *env) { bool async_deliver; =20 @@ -1796,7 +1796,15 @@ static int ppc_next_unmasked_interrupt(CPUPPCState *= env) return 0; } =20 -static void ppc_deliver_interrupt(CPUPPCState *env, int interrupt) +static int ppc_next_unmasked_interrupt(CPUPPCState *env) +{ + switch (env->excp_model) { + default: + return ppc_next_unmasked_interrupt_generic(env); + } +} + +static void ppc_deliver_interrupt_generic(CPUPPCState *env, int interrupt) { PowerPCCPU *cpu =3D env_archcpu(env); CPUState *cs =3D env_cpu(env); @@ -1900,6 +1908,14 @@ static void ppc_deliver_interrupt(CPUPPCState *env, = int interrupt) } } =20 +static void ppc_deliver_interrupt(CPUPPCState *env, int interrupt) +{ + switch (env->excp_model) { + default: + ppc_deliver_interrupt_generic(env, interrupt); + } +} + void ppc_cpu_do_system_reset(CPUState *cs) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975476; cv=none; d=zohomail.com; s=zohoarc; b=CIOrLLSHENI77utC5v4beMqrOy4KcndpfROxG7Sqz8kBlP9GWWVIHHgAx3hvDkkCg/l062+fnbTpTpStfZXb/I3CvBzSn/USXeVDmLhhR3Og4EpoMK+RswcocScDYi4nWUCb4sFV8Ll7mPtH6VDgRCaiGVRLIWU7hmKJ6zu4A0I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975476; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uQmpnQvJ7YrSNMk5mDEN0ClTw1ucQGsffcr3dTyJOBs=; b=mlVrVfzZ7H5jcmtNJgeYWDFYoQ40JeS7hD8SvkPWw6Vp5bmKN3VDlSwxovPIRbO6Mb6XgoCId49oXPqUTwGZ2MnAz9dsW8ovno9DoMHVgaZAW01ybfd8wO7Zv995lmAfgd1HH7ShFmKCu/9bRgzZHmDSAU8kDTu0lK3Wk2Tb6io= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16669754768121015.2651426127435; Fri, 28 Oct 2022 09:44:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRF-0002xC-19; Fri, 28 Oct 2022 12:42:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQR-0004H4-F6; Fri, 28 Oct 2022 12:41:43 -0400 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQP-00005d-Mp; Fri, 28 Oct 2022 12:41:43 -0400 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-13b23e29e36so6863537fac.8; Fri, 28 Oct 2022 09:41:40 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uQmpnQvJ7YrSNMk5mDEN0ClTw1ucQGsffcr3dTyJOBs=; b=JM3WakDnBlTt1f5UK0wanKf6yMrCcE/MG122ul2fUaxntGkJJeLbNyYKqRci6fj/WT ZC7ogl86F73IcguxfsaGnSOVBMdVjI/Aa1c9p9uuaf8PS4XkQvDeDOAFfvXnqatFPbPE oAMyX7veyUOZl7unPPkBeCmC6cBxM5k8C8NpLp9Cis1GaFQAtEkP3dk4nnv6+wQdcj1J QKGW3W5I3X8KOS8KjSx3wZfsRUe4VpChJ+j0SAA78z4t2cJRwAfIReP49gj85QiYHX/3 MHd5nSvRvRtJHQ73ltESWnuhuUKMIOm7h8V5GlKh5z5zDIuRabHMeZNedTf3t23YOwHS ZAQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uQmpnQvJ7YrSNMk5mDEN0ClTw1ucQGsffcr3dTyJOBs=; b=EyCHVO6T2yhRpuJNYGILS7DiOD/vHNY4lusXZ8EqmrNV0sKrhDAu4XnxcUPU6Sq6s9 FZKNl5Sg4jAxSAdRAYxzH7OP24TiOr44VBqioMbK1LyF5dp08OACwppgwIjjbH27U6Pf NUKO09OxG2Hp98HaerLYGjvesEBTYBQcIi3Hn6Iqa+zLfOiq/5zttdJlzsJhD+sLoJE7 mGgwsgXAJpj+f2NhM4oD1DBpXyYcBDL9xN8s/rXl5YOc0NSnzaJF/BfTbaQylux4sNO9 kTIqTA2MlcqBZ2KxibMIn/CzYs1J4X5IWtiPGELUcmP2Zdc6wiDNW0zbr9TvV+Lo9kuM NKBg== X-Gm-Message-State: ACrzQf3zJEVkBGoDmPWHkcWREwszVkrPlsfF2g9/lEMh6kK2MrcHhfws P8G9vIYM8FcjYpBmffAwRXBV8kfFmyrCJw== X-Google-Smtp-Source: AMsMyM4WPB2XukOYhi3fBSIMTRrZMfAQtjpxriEsGEQkNWemHoY76WgXCaHh8BcOiIln/5rhkouI3g== X-Received: by 2002:a05:6871:287:b0:13b:f19a:3766 with SMTP id i7-20020a056871028700b0013bf19a3766mr9583005oae.126.1666975299509; Fri, 28 Oct 2022 09:41:39 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 23/62] target/ppc: create an interrupt masking method for POWER9/POWER10 Date: Fri, 28 Oct 2022 13:39:12 -0300 Message-Id: <20221028163951.810456-24-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::31; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x31.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975477825100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst The new method is identical to ppc_next_unmasked_interrupt_generic, processor-specific code will be added/removed in the following patches. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-6-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 113 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 0e89d2e15b..4d2fb2ebd1 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1684,6 +1684,114 @@ void ppc_cpu_do_interrupt(CPUState *cs) powerpc_excp(cpu, cs->exception_index); } =20 +#if defined(TARGET_PPC64) +static int p9_next_unmasked_interrupt(CPUPPCState *env) +{ + bool async_deliver; + + /* External reset */ + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + /* Machine check exception */ + if (env->pending_interrupts & PPC_INTERRUPT_MCK) { + return PPC_INTERRUPT_MCK; + } + + /* + * For interrupts that gate on MSR:EE, we need to do something a + * bit more subtle, as we need to let them through even when EE is + * clear when coming out of some power management states (in order + * for them to become a 0x100). + */ + async_deliver =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sres= et; + + /* Hypervisor decrementer exception */ + if (env->pending_interrupts & PPC_INTERRUPT_HDECR) { + /* LPCR will be clear when not supported so this will work */ + bool hdice =3D !!(env->spr[SPR_LPCR] & LPCR_HDICE); + if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { + /* HDEC clears on delivery */ + return PPC_INTERRUPT_HDECR; + } + } + + /* Hypervisor virtualization interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_HVIRT) { + /* LPCR will be clear when not supported so this will work */ + bool hvice =3D !!(env->spr[SPR_LPCR] & LPCR_HVICE); + if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { + return PPC_INTERRUPT_HVIRT; + } + } + + /* External interrupt can ignore MSR:EE under some circumstances */ + if (env->pending_interrupts & PPC_INTERRUPT_EXT) { + bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); + bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); + /* HEIC blocks delivery to the hypervisor */ + if ((async_deliver && !(heic && FIELD_EX64_HV(env->msr) && + !FIELD_EX64(env->msr, MSR, PR))) || + (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { + return PPC_INTERRUPT_EXT; + } + } + if (FIELD_EX64(env->msr, MSR, CE)) { + /* External critical interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_CEXT) { + return PPC_INTERRUPT_CEXT; + } + } + if (async_deliver !=3D 0) { + /* Watchdog timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_WDT) { + return PPC_INTERRUPT_WDT; + } + if (env->pending_interrupts & PPC_INTERRUPT_CDOORBELL) { + return PPC_INTERRUPT_CDOORBELL; + } + /* Fixed interval timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_FIT) { + return PPC_INTERRUPT_FIT; + } + /* Programmable interval timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_PIT) { + return PPC_INTERRUPT_PIT; + } + /* Decrementer exception */ + if (env->pending_interrupts & PPC_INTERRUPT_DECR) { + return PPC_INTERRUPT_DECR; + } + if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { + return PPC_INTERRUPT_DOORBELL; + } + if (env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) { + return PPC_INTERRUPT_HDOORBELL; + } + if (env->pending_interrupts & PPC_INTERRUPT_PERFM) { + return PPC_INTERRUPT_PERFM; + } + /* Thermal interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_THERM) { + return PPC_INTERRUPT_THERM; + } + /* EBB exception */ + if (env->pending_interrupts & PPC_INTERRUPT_EBB) { + /* + * EBB exception must be taken in problem state and + * with BESCR_GE set. + */ + if (FIELD_EX64(env->msr, MSR, PR) && + (env->spr[SPR_BESCR] & BESCR_GE)) { + return PPC_INTERRUPT_EBB; + } + } + } + + return 0; +} +#endif + static int ppc_next_unmasked_interrupt_generic(CPUPPCState *env) { bool async_deliver; @@ -1799,6 +1907,11 @@ static int ppc_next_unmasked_interrupt_generic(CPUPP= CState *env) static int ppc_next_unmasked_interrupt(CPUPPCState *env) { switch (env->excp_model) { +#if defined(TARGET_PPC64) + case POWERPC_EXCP_POWER9: + case POWERPC_EXCP_POWER10: + return p9_next_unmasked_interrupt(env); +#endif default: return ppc_next_unmasked_interrupt_generic(env); } --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975398; cv=none; d=zohomail.com; s=zohoarc; b=H7FcAtrFb56Ix1izo4zkWLJ2MAx2lXO8gx9aUBkGR3RNHHP5L444TKom3jvg3DUbjZVjXAqG9ZNw5qln+Ct9ZlQXwkd9ctVYwBUZW39PXDgUrFJHhKKgg6hqzDWDE9gsPA9qgn9wYTK0LCwZLJYzPCeEuQZw+tY1uVm0w9WlZwI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975398; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=JCiYxYGyadO9LoYU4Gl96bRgSZ9v9BV4bKo5zyEXk2g=; b=P15nY3LGZi/xVHaKcE1WbLX88zTSNcq8b2JG8KULqtPWKPauV7FKyrF7qw+khL9a8LIhscmgIwy76jjN4E2KG1mCv9SflQ649em96skINyxljkEEsCdE22GUARXRuDA0WeADtGfbDDGcQLD0FAM5hcd2zxPWM2Asbso3goChXRE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975398849753.9054874177086; Fri, 28 Oct 2022 09:43:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRH-0003Rp-DJ; Fri, 28 Oct 2022 12:42:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQX-000529-9Y; Fri, 28 Oct 2022 12:41:50 -0400 Received: from mail-oa1-x36.google.com ([2001:4860:4864:20::36]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQV-00008V-J9; Fri, 28 Oct 2022 12:41:49 -0400 Received: by mail-oa1-x36.google.com with SMTP id 586e51a60fabf-13c569e5ff5so6495136fac.6; Fri, 28 Oct 2022 09:41:45 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JCiYxYGyadO9LoYU4Gl96bRgSZ9v9BV4bKo5zyEXk2g=; b=WD4Kreld1TTybKEuksb/mvly2tw0K5Tm1D030Ly5FTxw8xcErrdNUicHtPe7yBl1HU JfYMyT/s/FveVhjp1ZxQKKx5w94OwPQ/35WLE2RpAVed+g0yE4ITwzngmFPwfGghQm0/ JR056nwTdhPvOYM/3lerKhLetoUfOE03kUXuf32xqjfW6bAKoQZYLVxgr0mQBAlFscBw mPzZVHOsldUqGMh1r51O/zXfIEkk5TxPEpkcKlWIy+hnw4ITjip9PZKYSRpcTaYY8009 6n8cYP5mp/JPNNoT3xiubO34uvoLc80TNfFTbXOKFWworsuVTxT+PwwvtaToSy0m45JQ DKjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JCiYxYGyadO9LoYU4Gl96bRgSZ9v9BV4bKo5zyEXk2g=; b=F3YvHD2q+Oqh40AlXEyu3KwxW88ukBhD+BQaxDnb09KpCBrnyIz/OMoAM0u7UD/XbW RMZB2pAGx9UA6jFIo/JSHNxmEsNmy8Gq0xfgXsxooebCDJyWUMK98E/4L4m2d8bI6tiI VcrDxGWIbhqZRqStmPyRfRChWn2MpC75+my5vRejruOuJqrEi4nwkLNJt5ZqlPPp00e5 Sapb+OkC0D3HnVUStHTEHW2VziI+MIEeblyNGMggPKBbX0AvGlEu/gf799T+KRS+RXNI hQ73g9rOyB+qCS2rIPhpvOYLIYJjwLIS8z/cmeEz/r/ylO1X6PUPbyubF+slULSPFHqV g/iA== X-Gm-Message-State: ACrzQf2cYeMpOOTq7e4/2WHUC/sgqOOXzJmU0GlEM9An5PP8H2XSCnek 4vt4P7axyIO9Mw8B9pfQ/RdgwwQz/Aylgg== X-Google-Smtp-Source: AMsMyM7vwYwCkmCUOPSP5KHrco9tavf9wDzsJb5gTnzhF9Ga+vtH+7XwxIJzgqznWmy/J591f1MJLA== X-Received: by 2002:a05:6870:1712:b0:13a:bc2d:ac3e with SMTP id h18-20020a056870171200b0013abc2dac3emr5936oae.207.1666975304708; Fri, 28 Oct 2022 09:41:44 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 24/62] target/ppc: remove unused interrupts from p9_next_unmasked_interrupt Date: Fri, 28 Oct 2022 13:39:13 -0300 Message-Id: <20221028163951.810456-25-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::36; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x36.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975399470100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Remove the following unused interrupts from the POWER9 interrupt masking method: - PPC_INTERRUPT_RESET: only raised for 6xx, 7xx, 970 and POWER5p; - Debug Interrupt: removed in Power ISA v2.07; - Critical Input, Watchdog Timer, and Fixed Interval Timer: only defined for embedded CPUs; - Critical Doorbell Interrupt: removed in Power ISA v3.0; - Programmable Interval Timer: 40x-only. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-7-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 36 +++++++----------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 4d2fb2ebd1..740a5618b9 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1685,14 +1685,17 @@ void ppc_cpu_do_interrupt(CPUState *cs) } =20 #if defined(TARGET_PPC64) +#define P9_UNUSED_INTERRUPTS \ + (PPC_INTERRUPT_RESET | PPC_INTERRUPT_DEBUG | PPC_INTERRUPT_CEXT | \ + PPC_INTERRUPT_WDT | PPC_INTERRUPT_CDOORBELL | PPC_INTERRUPT_FIT | \ + PPC_INTERRUPT_PIT | PPC_INTERRUPT_THERM) + static int p9_next_unmasked_interrupt(CPUPPCState *env) { bool async_deliver; =20 - /* External reset */ - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return PPC_INTERRUPT_RESET; - } + assert((env->pending_interrupts & P9_UNUSED_INTERRUPTS) =3D=3D 0); + /* Machine check exception */ if (env->pending_interrupts & PPC_INTERRUPT_MCK) { return PPC_INTERRUPT_MCK; @@ -1736,28 +1739,7 @@ static int p9_next_unmasked_interrupt(CPUPPCState *e= nv) return PPC_INTERRUPT_EXT; } } - if (FIELD_EX64(env->msr, MSR, CE)) { - /* External critical interrupt */ - if (env->pending_interrupts & PPC_INTERRUPT_CEXT) { - return PPC_INTERRUPT_CEXT; - } - } if (async_deliver !=3D 0) { - /* Watchdog timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_WDT) { - return PPC_INTERRUPT_WDT; - } - if (env->pending_interrupts & PPC_INTERRUPT_CDOORBELL) { - return PPC_INTERRUPT_CDOORBELL; - } - /* Fixed interval timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_FIT) { - return PPC_INTERRUPT_FIT; - } - /* Programmable interval timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_PIT) { - return PPC_INTERRUPT_PIT; - } /* Decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_DECR) { return PPC_INTERRUPT_DECR; @@ -1771,10 +1753,6 @@ static int p9_next_unmasked_interrupt(CPUPPCState *e= nv) if (env->pending_interrupts & PPC_INTERRUPT_PERFM) { return PPC_INTERRUPT_PERFM; } - /* Thermal interrupt */ - if (env->pending_interrupts & PPC_INTERRUPT_THERM) { - return PPC_INTERRUPT_THERM; - } /* EBB exception */ if (env->pending_interrupts & PPC_INTERRUPT_EBB) { /* --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975412; cv=none; d=zohomail.com; s=zohoarc; b=PqUvnqlr7pEtkLBPLs/WNqjzN/FX010LlqS9MWFhP8kAXHHiOzi/rnbF2jkohJqyR5+yo3M/BxNzVd3SX/7pzIIoFsXevGBpMv1E4zt3HgWLYgi2uBUiDGkeOoKhaSbZhn4momCNCS3Zz3N2szpBUgzr5bvJnpgfTb3k24ejBRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975412; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6mfvihEtVcJMpoQNVk9PS8PKwxv5n3y5fmWzwV+j7NA=; b=QbreylOl3c7xTGE3XKpqQcX/T4J+pTo2dEu/7UbaVxM6DgJ4QYmjFlHrV+lHroE0ylC6NViMRSYq29goeB5mtow/Jy/yVV/+Qvu59KbU4L/eIKwALlJhLbW2xrZS/8n08BU+Izt2An14wrKgbH3M0PAAFYwnqPPjZLyLYyR1wsw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975412583685.0444046862896; Fri, 28 Oct 2022 09:43:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRJ-0003s8-9K; Fri, 28 Oct 2022 12:42:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQb-0005TF-EK; Fri, 28 Oct 2022 12:41:56 -0400 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQZ-0000AA-KJ; Fri, 28 Oct 2022 12:41:53 -0400 Received: by mail-ot1-x336.google.com with SMTP id br15-20020a056830390f00b0061c9d73b8bdso3279133otb.6; Fri, 28 Oct 2022 09:41:50 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6mfvihEtVcJMpoQNVk9PS8PKwxv5n3y5fmWzwV+j7NA=; b=EvI3ms4cO8jtK+J7XXDJqfwMLhHJSDRUwYxHU1Rot08lLjoI2mkXcZ7mJFbH865faw rizIIUpEY+imIdXgpTEnxZjCpvI5kfBefvb3sYhCS7yaimT+nDQx3Q79LbBL/e+qyfsv /HHe9/iM4MbsFKJhC5JeiWUF+N4LfljK3wPziOyi4e90ohWa+/wNYgbjkoK5ms+MyffB s2CKamV/0qpC5yKCDQ7wq5tw2+NVYnPgLJyx7kELWUCL4dWIJmCPGQaP9B9LuOep+Bxd W3TyAWJbMdc4cM72k94XlGwakqpewfSsJYP3WjzaQV5xOAck1pmEqKrx6MyA3vhrnNTS oCRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6mfvihEtVcJMpoQNVk9PS8PKwxv5n3y5fmWzwV+j7NA=; b=zoRYzRHEN/YW86EYTEIn0Zb08coIGqoWAJcFuWta8DFG1vrw30YR7hbaU3Ft8azgrU 24MhrnQganxAaWeAhR5ARl4y8tgD2/JQXUIgy5E8KvQjlwAfPpjt5cZU+4midCrydZUH p87UxzVEOSio4+WVXwmwaNrQU1AEWX/XwluKuMceFYRlNIDepUXNptmEi8LLAxI8bYaD s8n7xsrJ1yPe1jmail3jE/wZWrZfOzYrfl8Dl8VDCV7PCVRoWXBXNQJzxk8Nj/Zgm5lX YG/BbP2Ye1bQGGE00CcJUY2dFNVHKgtHu0wbcemKAMEF/DfUZsuqQbhT4+qzlMrLYHsh PENQ== X-Gm-Message-State: ACrzQf0V5sGJiFZ7pjsecbZEfd/zKTA2bTkAnXprunigrLjU2W090Wmm hB/5Jpa1mukGE0H07KfAzljK/r9gUo4zxA== X-Google-Smtp-Source: AMsMyM70mXZl3dBx9FAAqGuLhT8v998OoNi0F91bb07G+jM8bpvkTAsPX+GzZOjoslOh0+vzZpQ4+w== X-Received: by 2002:a9d:22c3:0:b0:661:acbc:c789 with SMTP id y61-20020a9d22c3000000b00661acbcc789mr124190ota.64.1666975309723; Fri, 28 Oct 2022 09:41:49 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 25/62] target/ppc: create an interrupt deliver method for POWER9/POWER10 Date: Fri, 28 Oct 2022 13:39:14 -0300 Message-Id: <20221028163951.810456-26-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::336; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x336.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975413592100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst The new method is identical to ppc_deliver_interrupt, processor-specific code will be added/removed in the following patches. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-8-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 112 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 740a5618b9..104b48dc43 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1895,6 +1895,112 @@ static int ppc_next_unmasked_interrupt(CPUPPCState = *env) } } =20 +#if defined(TARGET_PPC64) +static void p9_deliver_interrupt(CPUPPCState *env, int interrupt) +{ + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + + switch (interrupt) { + case PPC_INTERRUPT_RESET: /* External reset */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; + powerpc_excp(cpu, POWERPC_EXCP_RESET); + break; + case PPC_INTERRUPT_MCK: /* Machine check exception */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; + powerpc_excp(cpu, POWERPC_EXCP_MCHECK); + break; + + case PPC_INTERRUPT_HDECR: /* Hypervisor decrementer exception */ + /* HDEC clears on delivery */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDECR; + powerpc_excp(cpu, POWERPC_EXCP_HDECR); + break; + case PPC_INTERRUPT_HVIRT: /* Hypervisor virtualization interrupt */ + powerpc_excp(cpu, POWERPC_EXCP_HVIRT); + break; + + case PPC_INTERRUPT_EXT: + if (books_vhyp_promotes_external_to_hvirt(cpu)) { + powerpc_excp(cpu, POWERPC_EXCP_HVIRT); + } else { + powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL); + } + break; + case PPC_INTERRUPT_CEXT: /* External critical interrupt */ + powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); + break; + + case PPC_INTERRUPT_WDT: /* Watchdog timer on embedded PowerPC */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; + powerpc_excp(cpu, POWERPC_EXCP_WDT); + break; + case PPC_INTERRUPT_CDOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; + powerpc_excp(cpu, POWERPC_EXCP_DOORCI); + break; + case PPC_INTERRUPT_FIT: /* Fixed interval timer on embedded PowerPC */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; + powerpc_excp(cpu, POWERPC_EXCP_FIT); + break; + case PPC_INTERRUPT_PIT: /* Programmable interval timer on embedded ppc= */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; + powerpc_excp(cpu, POWERPC_EXCP_PIT); + break; + case PPC_INTERRUPT_DECR: /* Decrementer exception */ + if (ppc_decr_clear_on_delivery(env)) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; + } + powerpc_excp(cpu, POWERPC_EXCP_DECR); + break; + case PPC_INTERRUPT_DOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; + if (is_book3s_arch2x(env)) { + powerpc_excp(cpu, POWERPC_EXCP_SDOOR); + } else { + powerpc_excp(cpu, POWERPC_EXCP_DOORI); + } + break; + case PPC_INTERRUPT_HDOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; + powerpc_excp(cpu, POWERPC_EXCP_SDOOR_HV); + break; + case PPC_INTERRUPT_PERFM: + env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; + powerpc_excp(cpu, POWERPC_EXCP_PERFM); + break; + case PPC_INTERRUPT_THERM: /* Thermal interrupt */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; + powerpc_excp(cpu, POWERPC_EXCP_THERM); + break; + case PPC_INTERRUPT_EBB: /* EBB exception */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; + if (env->spr[SPR_BESCR] & BESCR_PMEO) { + powerpc_excp(cpu, POWERPC_EXCP_PERFM_EBB); + } else if (env->spr[SPR_BESCR] & BESCR_EEO) { + powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL_EBB); + } + break; + case 0: + /* + * This is a bug ! It means that has_work took us out of halt with= out + * anything to deliver while in a PM state that requires getting + * out via a 0x100 + * + * This means we will incorrectly execute past the power management + * instruction instead of triggering a reset. + * + * It generally means a discrepancy between the wakeup conditions = in the + * processor has_work implementation and the logic in this functio= n. + */ + assert(!env->resume_as_sreset); + break; + default: + cpu_abort(cs, "Invalid PowerPC interrupt %d. Aborting\n", interrup= t); + } +} +#endif + static void ppc_deliver_interrupt_generic(CPUPPCState *env, int interrupt) { PowerPCCPU *cpu =3D env_archcpu(env); @@ -2002,6 +2108,12 @@ static void ppc_deliver_interrupt_generic(CPUPPCStat= e *env, int interrupt) static void ppc_deliver_interrupt(CPUPPCState *env, int interrupt) { switch (env->excp_model) { +#if defined(TARGET_PPC64) + case POWERPC_EXCP_POWER9: + case POWERPC_EXCP_POWER10: + p9_deliver_interrupt(env, interrupt); + break; +#endif default: ppc_deliver_interrupt_generic(env, interrupt); } --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975388; cv=none; d=zohomail.com; s=zohoarc; b=jseQHGAIbMIgyIFckTKjhJU7dmTWSX8vhnOHgkx22sQtyP2hEz00wEb/sptlziFQnahSHhspVwfYJncrnMWptvTRsJB1WyhK6ebLQeCFGxJUUi2RsKjib0qJyzSUf2SThOd+YTGa7dvu3ZYUSF95LCrG5/LkvRKVlaUcJQ1w4Zo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975388; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=T83PUgkd+r1phGLmG7MuQKxohI3qcCXar6Lkey9wzO4=; b=Pn6R+n94STpAJU0/6S2GrV2EQyNkd6qRD9Y5mxFLOwpCX5Yt8DQb27a9zNYUjYZyepXawPFTLwY+FE0ZtsylO+j5kdtxqAjMGuaPciq7XoJjQBt7X4z5ohozY+cUTosvtZ/xQNXotG7aThK5dMCC0l1QVVAso0QL3yWsWLKDKF4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975388462223.9355463988593; Fri, 28 Oct 2022 09:43:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRK-00047o-Hu; Fri, 28 Oct 2022 12:42:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQf-0005p9-1i; Fri, 28 Oct 2022 12:41:58 -0400 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQd-0000Bj-FG; Fri, 28 Oct 2022 12:41:56 -0400 Received: by mail-oi1-x236.google.com with SMTP id i7so6714478oif.4; Fri, 28 Oct 2022 09:41:54 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T83PUgkd+r1phGLmG7MuQKxohI3qcCXar6Lkey9wzO4=; b=i9n4HXP/JIzzEn0AyMwlsxVieDHL6Bfp9gMvv4ZyphhxdFzflam6VGXouZBf3NDmtc r+uckyTM3pHZuuopt56gjVw4e1fTtE1+KETgguLyzPuIgzReUPY8/HrfZhmYrM4M/+aT /yGbRlBiJ8THC5kY9DG8w/teMIf+EA8OfS5+a535ICVRqEYoIdzas/3laFd5v79jvL7k +FIgMzwj8VpiGxAJw5gl80sYTpzN66/n5eK8dfnwpCxQvVTVmyn386hCRm46kfRo9U16 AdY7UIZ0CNfrU+/O1ospnmapSIrmSCfyZvR3bCwZzaq7UbO+F/wXbIT3fNz4M2cbcxMt JkiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T83PUgkd+r1phGLmG7MuQKxohI3qcCXar6Lkey9wzO4=; b=79S5QmfK3NYrslB5vrm7AmUBa3Hiix/3UItKryXdyczSt9xlC2Em6OF3bGWMnY6cs0 fnDyyk6CVNkAkIe2hwtKDLbqJbkAsdiPFtjicGzBToXo2HXkQ2ORhmanVd9FGW749Fgv YBUc1oshkLZePBDTVF+LtT1zT/SrhGo1Schf0tp1CtdehmwPQ2xg8xEnC0VH8Gitu9DQ i7+6l8qHF/zoebr93bbwv3EKW4gkUMgPymdVf30Neft0pffw046h+XkyyhXmtVPtMgVZ FSYYC/Ufaf6eXBUsT8o4aEzPYkTvSWTNlNghn8tQ/168moqrLoxO+buE0qe/tQ2DzxLB cJZQ== X-Gm-Message-State: ACrzQf331LDO5MA6xcTHBpUxrx1WQvWl7WN9srlMdM34kzanOOMGeaef jz4+prdoMhlYX0sbcc9WsjXam9Xr8FfYhQ== X-Google-Smtp-Source: AMsMyM5+dJv7hX0EHjOZDAkqdFiLVG3vTLmI7VYUeKKsdzzdLCV/nsEEIEqCmGAjPHsagCC3ZDaKzA== X-Received: by 2002:a05:6808:140a:b0:355:230f:b7f1 with SMTP id w10-20020a056808140a00b00355230fb7f1mr8640964oiv.8.1666975313817; Fri, 28 Oct 2022 09:41:53 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 26/62] target/ppc: remove unused interrupts from p9_deliver_interrupt Date: Fri, 28 Oct 2022 13:39:15 -0300 Message-Id: <20221028163951.810456-27-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::236; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x236.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975389371100005 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Remove the following unused interrupts from the POWER9 interrupt processing method: - PPC_INTERRUPT_RESET: only raised for 6xx, 7xx, 970 and POWER5p; - Debug Interrupt: removed in Power ISA v2.07; - Critical Input, Watchdog Timer, and Fixed Interval Timer: only defined for embedded CPUs; - Critical Doorbell Interrupt: removed in Power ISA v3.0; - Programmable Interval Timer: 40x-only. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-9-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 104b48dc43..288bb20deb 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1902,10 +1902,6 @@ static void p9_deliver_interrupt(CPUPPCState *env, i= nt interrupt) CPUState *cs =3D env_cpu(env); =20 switch (interrupt) { - case PPC_INTERRUPT_RESET: /* External reset */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; - powerpc_excp(cpu, POWERPC_EXCP_RESET); - break; case PPC_INTERRUPT_MCK: /* Machine check exception */ env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; powerpc_excp(cpu, POWERPC_EXCP_MCHECK); @@ -1927,26 +1923,7 @@ static void p9_deliver_interrupt(CPUPPCState *env, i= nt interrupt) powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL); } break; - case PPC_INTERRUPT_CEXT: /* External critical interrupt */ - powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); - break; =20 - case PPC_INTERRUPT_WDT: /* Watchdog timer on embedded PowerPC */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; - powerpc_excp(cpu, POWERPC_EXCP_WDT); - break; - case PPC_INTERRUPT_CDOORBELL: - env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; - powerpc_excp(cpu, POWERPC_EXCP_DOORCI); - break; - case PPC_INTERRUPT_FIT: /* Fixed interval timer on embedded PowerPC */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; - powerpc_excp(cpu, POWERPC_EXCP_FIT); - break; - case PPC_INTERRUPT_PIT: /* Programmable interval timer on embedded ppc= */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; - powerpc_excp(cpu, POWERPC_EXCP_PIT); - break; case PPC_INTERRUPT_DECR: /* Decrementer exception */ if (ppc_decr_clear_on_delivery(env)) { env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; @@ -1969,10 +1946,6 @@ static void p9_deliver_interrupt(CPUPPCState *env, i= nt interrupt) env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; powerpc_excp(cpu, POWERPC_EXCP_PERFM); break; - case PPC_INTERRUPT_THERM: /* Thermal interrupt */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; - powerpc_excp(cpu, POWERPC_EXCP_THERM); - break; case PPC_INTERRUPT_EBB: /* EBB exception */ env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; if (env->spr[SPR_BESCR] & BESCR_PMEO) { --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975698; cv=none; d=zohomail.com; s=zohoarc; b=BS7XscLoxFm22dT2eOaeCn3QMkwtaimJKRai2gjoP0CYl9XCkTsEvosa/9pL7PgvYDvstaZgPON4TT5yEU+18CMYHws7ozj/pqbgF0K4qZ/GUKktO5sUMZvsTvFT4tlNn1rZggbV5WEIH9gV6Wr0gksKvoMyu9nKYstfeaJq+qQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975698; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=RmZyKQt5wyLEKZsYZcqrmba4nFk6zhV+64M78BnCRMU=; b=M6RlbCEdV7zOmQwJ9gUACWsXxQUNKOSjGgvsPRNtfq0ktQbgTE0zvKtuX1kQZx3MzC0kKl9epjlzO+ZLvegVqef0aJcq4XfllBhbaCTnOEklwPwJnsAyW9VhQJGl7WQ2IJW6X9FsEwd6KoYXOBJTXRsNIPHet7I/GmjL+mGeCC0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975698107111.13993640413526; Fri, 28 Oct 2022 09:48:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRM-0004UX-60; Fri, 28 Oct 2022 12:42:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQj-0006XS-3B; Fri, 28 Oct 2022 12:42:01 -0400 Received: from mail-oi1-x235.google.com ([2607:f8b0:4864:20::235]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQh-0000Ei-Eb; Fri, 28 Oct 2022 12:42:00 -0400 Received: by mail-oi1-x235.google.com with SMTP id o64so6663235oib.12; Fri, 28 Oct 2022 09:41:58 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:41:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RmZyKQt5wyLEKZsYZcqrmba4nFk6zhV+64M78BnCRMU=; b=mi5w5MyHJHjQJL9AF4CenDsNABjd1LvjuQvFfgaGkoUyaBdJfgX9DPTw3KT0gKlH0e 1o8zxSB5Y++g2PWfaRRzvej1xoW2JvckUG4l43NFINvhLt0faCYmC7kdV5CfiDEmmbsH FrIHYw3vvY4gMraW0NoK7iYoZw7h/ypyobaZA3wRU5xugABIzBSpBXuYtfjZO8AcSRIO qtN2PpHnvpfc2t8w0NuLJuC5QeJn/FFKzZP/m3v+/j3gIMJaBl9Wu8dBDuRSiXaDaneh VCuCqAltXpb09xMwv0ULI3jTEYX3KbdOZU6qtMBMcQpimbQ8E7BJ38Ai5O2e2ZOkE0mO A8nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RmZyKQt5wyLEKZsYZcqrmba4nFk6zhV+64M78BnCRMU=; b=upvLqIMKAtHjAxzwAnkVZFdG77XssTCiCCrHFEIusxn5+2+DBwC7ATOg+VtEcWcYIq P4N3z3UT7VPOnXVYB1BjU2TYmOu/DEfg75lWS0M5VtZOLtp6OUXBZ0npQmeHONvTjI02 D4fv/61Q57MlIpPVkSWodEDhb7kGsKU2et8b+TzjTQEYZlhHueW0Ng8B31HagRVs+t0g P4z+k2HhQOVUPSl3UlXc1yaiK+TLmCNbBfDN+IbE7wbgovns/g85WOTX42pZjAQgD/A4 8c757CQQZpCJWHrMzUol35CommtZZzW55Fcm4cTyxi3Dm2Tns/nTqrX2q35iDK5rjF93 ctHw== X-Gm-Message-State: ACrzQf2JA3LozI5pqIBe4gmafck43HSd6n9IQa1EqhB+oe2idVUQuN/D 2cYb0Kr4x1OAoRYBRGXX3yGYgKvShZFdrA== X-Google-Smtp-Source: AMsMyM5Jaca5wRLLMa+3STKqwKssQk8NOs1tZFioGlTLtoI6cNfW0T0DCK35qaJL1cYJTlxpCw0rxg== X-Received: by 2002:a05:6808:14c1:b0:354:d3bf:67b with SMTP id f1-20020a05680814c100b00354d3bf067bmr8820456oiw.160.1666975317727; Fri, 28 Oct 2022 09:41:57 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 27/62] target/ppc: remove generic architecture checks from p9_deliver_interrupt Date: Fri, 28 Oct 2022 13:39:16 -0300 Message-Id: <20221028163951.810456-28-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::235; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x235.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975699072100005 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-10-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 288bb20deb..238ce78235 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1925,18 +1925,11 @@ static void p9_deliver_interrupt(CPUPPCState *env, = int interrupt) break; =20 case PPC_INTERRUPT_DECR: /* Decrementer exception */ - if (ppc_decr_clear_on_delivery(env)) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; - } powerpc_excp(cpu, POWERPC_EXCP_DECR); break; case PPC_INTERRUPT_DOORBELL: env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; - if (is_book3s_arch2x(env)) { - powerpc_excp(cpu, POWERPC_EXCP_SDOOR); - } else { - powerpc_excp(cpu, POWERPC_EXCP_DOORI); - } + powerpc_excp(cpu, POWERPC_EXCP_SDOOR); break; case PPC_INTERRUPT_HDOORBELL: env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975519; cv=none; d=zohomail.com; s=zohoarc; b=mZOhXN00Q8g4CMTE3JgalmDAaNPBfHOmVTGA3l49Ovnd/Zzgif4D4z24GwiyDDjUNwlY/3CvqOX0C8kCi921aT7op6Iuknfles8dnwLRH38zI6XICP3HjS3DfWX8cych0gz5PRT099/xQkP4HCyf3y+7tl4Qk4Iu9XZGtlIHWX4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975519; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Ir31LYHZTGIDQcAquycnBpVThnSNTbxaGN4PE53CcPA=; b=HZ5Q1JJSXkTVagwSZrsstqBES4t8BbNTCtxAAudWAECiOVS0OiCL5Hb3Gm6KLZ88C6ojbBXBhlLgeShtLSkEhUWM7DQJcz+Yjd1mDirpGQaQ9KVsmPkvO3GzznPki5EafNsLifGqQXatcIW+D76b3+aoHdwLN9e7sW6ENdozm6I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975519615556.8656672052491; Fri, 28 Oct 2022 09:45:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRN-0004ja-Bs; Fri, 28 Oct 2022 12:42:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQo-0007V9-QM; Fri, 28 Oct 2022 12:42:06 -0400 Received: from mail-oo1-xc35.google.com ([2607:f8b0:4864:20::c35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQm-0000I2-Sh; Fri, 28 Oct 2022 12:42:06 -0400 Received: by mail-oo1-xc35.google.com with SMTP id j6-20020a4ab1c6000000b004809a59818cso849563ooo.0; Fri, 28 Oct 2022 09:42:03 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.41.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ir31LYHZTGIDQcAquycnBpVThnSNTbxaGN4PE53CcPA=; b=YH69QwIMyntUTYZOae2I1AFO5suusJH8kz0GwjDhCKh3KaaeRKI2neK3RHiqfZSxLC +B8GaJGr9swRhJdgO+kKP5SP2b1IeWwfNwUZDiSdtPzk8sPbZ1o5UcAnUzkiRodLRQYe Vaivu3wG6f+5Wz6tRO6QRNro0EoM5SGUzJ6YehAAGUXSbi+qYwNlk0Z5JsPHZF9Lpn1x goXkf6cJVcRkilq2UG0SA834AGXdqt5+rS922EUDqfw7T+NmvxpQ7K4hPxwKIEIkvspD H3SXc0N2jWli0g7NA2vvLOdi9/KEf9jfnU+1Ci3+9vB1cHBCPLlQyG0XnU/YWcxatt5v SG4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ir31LYHZTGIDQcAquycnBpVThnSNTbxaGN4PE53CcPA=; b=srVjhS35+rbVxTs/wxWDrUjqZVYFyCe2bmf0YB3aw+mgiXH8lfhRqxckA6WRXbKQ7o 6af4Fq7w0pivs7ZewNxfrlhu41HK+UzKPyffQ8dXNLquZGqQHBP8Mrirs5mpaGao+rXZ /fLFn+opB7HJwrkSe7sfpLSzkEkEOk9NLhW0o48zynHp2hyv2592u7SbLDLBoK4k0iFe Ma7WUxYdTnDFxs2OjiGRHE7J8N46uhvl6MBPN4pR7ibkCGim+GOlhQAcaDUGsb0haY1G 7pLOZv0LeY3NnNQKbvIX4vFHdQBaid0zlnjGdK2rKVvxV99pZ22WGV3l4g9J7dNoL5eU n2kQ== X-Gm-Message-State: ACrzQf13tH2DFM0bTp6nJiLfghxTz/1pWkNIaA5cvi6DechU4c6xVZW6 P5gGfWPGMeiA3Ed6At0SimJMPvK/a2SDWA== X-Google-Smtp-Source: AMsMyM6/TvABCphHXvDPaFCspBtRgq1Y5eZUBplF7VUPb8sfSNa/E2cIatWbbQsegyb4ZIB5TkOHVQ== X-Received: by 2002:a4a:9506:0:b0:476:4812:3edf with SMTP id m6-20020a4a9506000000b0047648123edfmr189981ooi.62.1666975322936; Fri, 28 Oct 2022 09:42:02 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 28/62] target/ppc: move power-saving interrupt masking out of cpu_has_work_POWER9 Date: Fri, 28 Oct 2022 13:39:17 -0300 Message-Id: <20221028163951.810456-29-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::c35; envelope-from=danielhb413@gmail.com; helo=mail-oo1-xc35.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975520063100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Move the interrupt masking logic out of cpu_has_work_POWER9 in a new method, p9_interrupt_powersave, that only returns an interrupt if it can wake the processor from power-saving mode. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-11-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu_init.c | 126 +++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 76 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 07171c679c..9ecea10b48 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -6351,6 +6351,52 @@ static bool ppc_pvr_match_power9(PowerPCCPUClass *pc= c, uint32_t pvr, bool best) return false; } =20 +static int p9_interrupt_powersave(CPUPPCState *env) +{ + /* External Exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && + (env->spr[SPR_LPCR] & LPCR_EEE)) { + bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); + if (!heic || !FIELD_EX64_HV(env->msr) || + FIELD_EX64(env->msr, MSR, PR)) { + return PPC_INTERRUPT_EXT; + } + } + /* Decrementer Exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && + (env->spr[SPR_LPCR] & LPCR_DEE)) { + return PPC_INTERRUPT_DECR; + } + /* Machine Check or Hypervisor Maintenance Exception */ + if (env->spr[SPR_LPCR] & LPCR_OEE) { + if (env->pending_interrupts & PPC_INTERRUPT_MCK) { + return PPC_INTERRUPT_MCK; + } + if (env->pending_interrupts & PPC_INTERRUPT_HMI) { + return PPC_INTERRUPT_HMI; + } + } + /* Privileged Doorbell Exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && + (env->spr[SPR_LPCR] & LPCR_PDEE)) { + return PPC_INTERRUPT_DOORBELL; + } + /* Hypervisor Doorbell Exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && + (env->spr[SPR_LPCR] & LPCR_HDEE)) { + return PPC_INTERRUPT_HDOORBELL; + } + /* Hypervisor virtualization exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_HVIRT) && + (env->spr[SPR_LPCR] & LPCR_HVEE)) { + return PPC_INTERRUPT_HVIRT; + } + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + return 0; +} + static bool cpu_has_work_POWER9(CPUState *cs) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); @@ -6367,44 +6413,8 @@ static bool cpu_has_work_POWER9(CPUState *cs) if (!(psscr & PSSCR_EC)) { return true; } - /* External Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && - (env->spr[SPR_LPCR] & LPCR_EEE)) { - bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); - if (!heic || !FIELD_EX64_HV(env->msr) || - FIELD_EX64(env->msr, MSR, PR)) { - return true; - } - } - /* Decrementer Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && - (env->spr[SPR_LPCR] & LPCR_DEE)) { - return true; - } - /* Machine Check or Hypervisor Maintenance Exception */ - if ((env->pending_interrupts & (PPC_INTERRUPT_MCK | PPC_INTERRUPT_= HMI)) - && (env->spr[SPR_LPCR] & LPCR_OEE)) { - return true; - } - /* Privileged Doorbell Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && - (env->spr[SPR_LPCR] & LPCR_PDEE)) { - return true; - } - /* Hypervisor Doorbell Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && - (env->spr[SPR_LPCR] & LPCR_HDEE)) { - return true; - } - /* Hypervisor virtualization exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_HVIRT) && - (env->spr[SPR_LPCR] & LPCR_HVEE)) { - return true; - } - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return true; - } - return false; + + return p9_interrupt_powersave(env) !=3D 0; } else { return FIELD_EX64(env->msr, MSR, EE) && (cs->interrupt_request & CPU_INTERRUPT_HARD); @@ -6600,44 +6610,8 @@ static bool cpu_has_work_POWER10(CPUState *cs) if (!(psscr & PSSCR_EC)) { return true; } - /* External Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && - (env->spr[SPR_LPCR] & LPCR_EEE)) { - bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); - if (!heic || !FIELD_EX64_HV(env->msr) || - FIELD_EX64(env->msr, MSR, PR)) { - return true; - } - } - /* Decrementer Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && - (env->spr[SPR_LPCR] & LPCR_DEE)) { - return true; - } - /* Machine Check or Hypervisor Maintenance Exception */ - if ((env->pending_interrupts & (PPC_INTERRUPT_MCK | PPC_INTERRUPT_= HMI)) - && (env->spr[SPR_LPCR] & LPCR_OEE)) { - return true; - } - /* Privileged Doorbell Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && - (env->spr[SPR_LPCR] & LPCR_PDEE)) { - return true; - } - /* Hypervisor Doorbell Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && - (env->spr[SPR_LPCR] & LPCR_HDEE)) { - return true; - } - /* Hypervisor virtualization exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_HVIRT) && - (env->spr[SPR_LPCR] & LPCR_HVEE)) { - return true; - } - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return true; - } - return false; + + return p9_interrupt_powersave(env) !=3D 0; } else { return FIELD_EX64(env->msr, MSR, EE) && (cs->interrupt_request & CPU_INTERRUPT_HARD); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975915; cv=none; d=zohomail.com; s=zohoarc; b=a9X+L8XI6cYGKBCETKBV0ajfH/BacgYQ5FzEFDD+RNmRMy1Xd00Sx3Oz7490dP1rscXVONIzcc+3GPWQhqnLuIIO0ULo1ygT6VmwUlKuZzjxcQQ3qRhvB0FrK0cB2fSx9QRSg8yKCn6E3SlHQZJRhkbCrX99gHj/TBcq9utofrg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975915; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QQU2NZAkL2rlALcztaSCXKZOQ5f9Zwmv0jWjXGtFlxc=; b=kv5TqKXu56v1CnwVM/Cla4JpKMkF1tkFmUTTJHOUtN4h6kDGcZrFhZQEWN2HyWFsQKIf0++pzgwPEZ57uiK/eB/eU2kbwR76Sqpimhzl6Q9a4EbjcwRVDKepbopNloOVyGXOpM1RC7bQIXaPcI4Ie7xLR95O7fuJbw81ee6sbZw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975915019367.47608922015047; Fri, 28 Oct 2022 09:51:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRT-00060i-I7; Fri, 28 Oct 2022 12:42:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQt-00084J-FA; Fri, 28 Oct 2022 12:42:11 -0400 Received: from mail-oo1-xc32.google.com ([2607:f8b0:4864:20::c32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQr-0000JM-6e; Fri, 28 Oct 2022 12:42:10 -0400 Received: by mail-oo1-xc32.google.com with SMTP id r76-20020a4a374f000000b004988a70de2eso116399oor.2; Fri, 28 Oct 2022 09:42:08 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QQU2NZAkL2rlALcztaSCXKZOQ5f9Zwmv0jWjXGtFlxc=; b=YQqsmCSEZNnwztXLN994ofzhVWIRoqx9F9eHFiNzM/Hn4mw3LPYXouE91tvh+PDt7s to4TjbV9rpvilPZzS/AI3DGDrZR6ngMWMT5z+nbIR2R6faWFMBZfHzvXkAmNF+oBoLlD R3C6W0zTxwiB46s5/q7elnvsMHd4E4p3vKgVjioymWuqjc51JSE9JAJ9CQAgu+ANvjZ6 3+CLOyru48QXQxvMxP+nVjF1CWCEw7OqboluX7TjI3faN9cdwePZe3wFCes3xPTQHjk5 YCvtEs9rmz+h5KX1ikrESzU9L59ze9ik/UfeQBghGzo5BR0x5rRlZVo+Z+kv7NyvzvTy CAlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QQU2NZAkL2rlALcztaSCXKZOQ5f9Zwmv0jWjXGtFlxc=; b=A80sIquXa3wObm40xl6smD8DM7mooJOT2KqfUZIbFU2TCQy1pcVnwZlyyx5nuuxXKb HE350ni20N5yggvpvltyIW+cofz90lRbBg4rrIMpaZdPxROh3ATRtZLgGE5hkuB+lp1Q b7dNLxFk8FMP954dQvPJDPoKwhfTA8zaEARhN7ZXAsHRvSWdMAsl9BmEJuy5tB3NkJkF 1lTw7Ksl5WnR7EgyV16PhhY+aBZCFkotfpkLHTOxKiEeVZw4huzqypwYVUWbLbcYoIc1 73WyTNWthmLRStJK9sKaJIC6dtSdIeQwRpa5D/yOYGk9l0iYpp1sZEm++SvsrWmWFM24 hn1A== X-Gm-Message-State: ACrzQf2EfKu++TgfOYTqiaPzK2qHXT1n+3Vt8n1rKv3i1TfQrWp1JySH q4YNwWeacZ+6GlNOtdD0E5Krceg5p2/C/A== X-Google-Smtp-Source: AMsMyM6EMkNac0d+b+Vat/Xn+LVUfkQipcm1xgLZcIcYrvb/CfUT182u9unLXUNJjxobWmKSqnK//Q== X-Received: by 2002:a4a:b447:0:b0:480:9c98:46a3 with SMTP id h7-20020a4ab447000000b004809c9846a3mr202385ooo.14.1666975327157; Fri, 28 Oct 2022 09:42:07 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 29/62] target/ppc: add power-saving interrupt masking logic to p9_next_unmasked_interrupt Date: Fri, 28 Oct 2022 13:39:18 -0300 Message-Id: <20221028163951.810456-30-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::c32; envelope-from=danielhb413@gmail.com; helo=mail-oo1-xc32.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975916890100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Export p9_interrupt_powersave and use it in p9_next_unmasked_interrupt. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-12-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu_init.c | 2 +- target/ppc/excp_helper.c | 46 ++++++++++++++++++++++++++++------------ target/ppc/internal.h | 4 ++++ 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 9ecea10b48..423d99d8d3 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -6351,7 +6351,7 @@ static bool ppc_pvr_match_power9(PowerPCCPUClass *pcc= , uint32_t pvr, bool best) return false; } =20 -static int p9_interrupt_powersave(CPUPPCState *env) +int p9_interrupt_powersave(CPUPPCState *env) { /* External Exception */ if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 238ce78235..836c90b9a8 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1692,28 +1692,39 @@ void ppc_cpu_do_interrupt(CPUState *cs) =20 static int p9_next_unmasked_interrupt(CPUPPCState *env) { - bool async_deliver; + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D CPU(cpu); + /* Ignore MSR[EE] when coming out of some power management states */ + bool msr_ee =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sreset; =20 assert((env->pending_interrupts & P9_UNUSED_INTERRUPTS) =3D=3D 0); =20 + if (cs->halted) { + if (env->spr[SPR_PSSCR] & PSSCR_EC) { + /* + * When PSSCR[EC] is set, LPCR[PECE] controls which interrupts= can + * wakeup the processor + */ + return p9_interrupt_powersave(env); + } else { + /* + * When it's clear, any system-caused exception exits power-sa= ving + * mode, even the ones that gate on MSR[EE]. + */ + msr_ee =3D true; + } + } + /* Machine check exception */ if (env->pending_interrupts & PPC_INTERRUPT_MCK) { return PPC_INTERRUPT_MCK; } =20 - /* - * For interrupts that gate on MSR:EE, we need to do something a - * bit more subtle, as we need to let them through even when EE is - * clear when coming out of some power management states (in order - * for them to become a 0x100). - */ - async_deliver =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sres= et; - /* Hypervisor decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_HDECR) { /* LPCR will be clear when not supported so this will work */ bool hdice =3D !!(env->spr[SPR_LPCR] & LPCR_HDICE); - if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { + if ((msr_ee || !FIELD_EX64_HV(env->msr)) && hdice) { /* HDEC clears on delivery */ return PPC_INTERRUPT_HDECR; } @@ -1723,7 +1734,7 @@ static int p9_next_unmasked_interrupt(CPUPPCState *en= v) if (env->pending_interrupts & PPC_INTERRUPT_HVIRT) { /* LPCR will be clear when not supported so this will work */ bool hvice =3D !!(env->spr[SPR_LPCR] & LPCR_HVICE); - if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { + if ((msr_ee || !FIELD_EX64_HV(env->msr)) && hvice) { return PPC_INTERRUPT_HVIRT; } } @@ -1733,13 +1744,13 @@ static int p9_next_unmasked_interrupt(CPUPPCState *= env) bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); /* HEIC blocks delivery to the hypervisor */ - if ((async_deliver && !(heic && FIELD_EX64_HV(env->msr) && + if ((msr_ee && !(heic && FIELD_EX64_HV(env->msr) && !FIELD_EX64(env->msr, MSR, PR))) || (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { return PPC_INTERRUPT_EXT; } } - if (async_deliver !=3D 0) { + if (msr_ee !=3D 0) { /* Decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_DECR) { return PPC_INTERRUPT_DECR; @@ -1901,6 +1912,15 @@ static void p9_deliver_interrupt(CPUPPCState *env, i= nt interrupt) PowerPCCPU *cpu =3D env_archcpu(env); CPUState *cs =3D env_cpu(env); =20 + if (cs->halted && !(env->spr[SPR_PSSCR] & PSSCR_EC) && + !FIELD_EX64(env->msr, MSR, EE)) { + /* + * A pending interrupt took us out of power-saving, but MSR[EE] sa= ys + * that we should return to NIP+4 instead of delivering it. + */ + return; + } + switch (interrupt) { case PPC_INTERRUPT_MCK: /* Machine check exception */ env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; diff --git a/target/ppc/internal.h b/target/ppc/internal.h index 337a362205..41e79adfdb 100644 --- a/target/ppc/internal.h +++ b/target/ppc/internal.h @@ -306,4 +306,8 @@ static inline int ger_pack_masks(int pmsk, int ymsk, in= t xmsk) return msk; } =20 +#if defined(TARGET_PPC64) +int p9_interrupt_powersave(CPUPPCState *env); +#endif + #endif /* PPC_INTERNAL_H */ --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975722; cv=none; d=zohomail.com; s=zohoarc; b=KaD9RwFTk8vEMNQzze7iAOPiPzXr3lgFWaAyvtIORsy5fbOO+M8MN6cCeinWivNwMCY0srCXBX7+EfKnH3ZLiSey7DE9QJ8Ow70rq62r32TF3ffQF6PIS9bvoQTu+BiLWG3vrwf0Pt8FWKuvEIJQc4Ijq9FwKbB438nBYbeAN0s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975722; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6V/k4dzfWQNAToVF+rbcK2lUFqnnOHrV0RbyF2HNRKM=; b=ViUaARAO86830hI26ZDcQVtelMIEyZNzKCs/UZ/GIhVGubMAqujEiMY2T64j3Wezi26g0uW/oFDGGWpL/OC6rxMAvVoV+5C9ZC1SHku81KvaBsTbKPNgMqCMXFoLtP0YhD7xKYVCaZr0fK1K+/gjRVmBG1wY8ZfqqRBGvOGpv3Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975722322621.7709213549123; Fri, 28 Oct 2022 09:48:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRU-0006Fs-Nr; Fri, 28 Oct 2022 12:42:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSQx-0000TK-Mb; Fri, 28 Oct 2022 12:42:15 -0400 Received: from mail-oa1-x2d.google.com ([2001:4860:4864:20::2d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSQv-0000Ko-NT; Fri, 28 Oct 2022 12:42:15 -0400 Received: by mail-oa1-x2d.google.com with SMTP id 586e51a60fabf-13b6c1c89bdso6836954fac.13; Fri, 28 Oct 2022 09:42:12 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6V/k4dzfWQNAToVF+rbcK2lUFqnnOHrV0RbyF2HNRKM=; b=RAu6OZKylNMgH/whGxDbcm+UoHafev55KwykdoBtehTmsjRbxavvdXviYvVFQ4u4pY iZaF5jnB+G8h1L/LgH5OAebJCOVgY4ptEI31/OiH8leSz+QMNIjOD2JT5lfr93FsvoEZ iPuNtjMjTccNM1s2jeKh4fpn3/IxJqASTDDL0IMNs9sSmrk3Uw/cBHpobBPavK8mE6gE jyTGUyuR9Wmr9EAgvaxHneRZlkCy3ffnI8at4ll7TFju79whn5ixTqKnErFI9OJsjy0o FFbo9fecg3ObTdKlpW/q/gpYbG6NA7KjFt2PWIRbuseQLqDO+rTnbMjUar7RU6I2qt5Q sg3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6V/k4dzfWQNAToVF+rbcK2lUFqnnOHrV0RbyF2HNRKM=; b=BJ9rTY0N34kIQ5CWkVgRdWSNhzqNaIH8SDtY1DnVmPB2jLFT3ZBW9tSsVEsCh8tg45 AgkAvrAQSTs++g2BFCtfnmzo3FPgxLPOOO43PrQHljoAcYivBhM7muhDlZYIlfxfTVZg sgADUqmhGDvUN1lC2wNSJjkTxwWjyRMNZLEqJNFwBjTn3qDrbU53txT/T3TbuIUX2Cld bopI3+iBBqUPNYBqz+KUPLkK2MfCOTjVQrPrwauE7cZhCb5wMC8E5fov/+JwzzOICfMn yNhWCEncydFF+HEEpVfzvM696heC8tyZX4Pd4fFuYY0Opc5HaanbkzkdwIOb9r6jPpBG De6g== X-Gm-Message-State: ACrzQf0Y3xn/2TqQdoDulW+gpQhgEMHiOADpfxOALz4sMoiG9v9Q3FNi ebmODNeOQpM/hvYj9dXVGvCux51lvDeQew== X-Google-Smtp-Source: AMsMyM7fT6P/XUO+jJwP6zWL43DXPLLknKY0WATC8DkEoZK8JNPkM2eeVfJzKfPPm0/uCmhhvjqUTw== X-Received: by 2002:a05:6870:5890:b0:136:8cc1:1aa6 with SMTP id be16-20020a056870589000b001368cc11aa6mr22154oab.21.1666975331564; Fri, 28 Oct 2022 09:42:11 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 30/62] target/ppc: create an interrupt masking method for POWER8 Date: Fri, 28 Oct 2022 13:39:19 -0300 Message-Id: <20221028163951.810456-31-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2d; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975723345100007 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst The new method is identical to ppc_next_unmasked_interrupt_generic, processor-specific code will be added/removed in the following patches. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-13-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 108 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 836c90b9a8..c7b303a9a7 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1685,6 +1685,112 @@ void ppc_cpu_do_interrupt(CPUState *cs) } =20 #if defined(TARGET_PPC64) +static int p8_next_unmasked_interrupt(CPUPPCState *env) +{ + bool async_deliver; + + /* External reset */ + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + /* Machine check exception */ + if (env->pending_interrupts & PPC_INTERRUPT_MCK) { + return PPC_INTERRUPT_MCK; + } + + /* + * For interrupts that gate on MSR:EE, we need to do something a + * bit more subtle, as we need to let them through even when EE is + * clear when coming out of some power management states (in order + * for them to become a 0x100). + */ + async_deliver =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sres= et; + + /* Hypervisor decrementer exception */ + if (env->pending_interrupts & PPC_INTERRUPT_HDECR) { + /* LPCR will be clear when not supported so this will work */ + bool hdice =3D !!(env->spr[SPR_LPCR] & LPCR_HDICE); + if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { + /* HDEC clears on delivery */ + return PPC_INTERRUPT_HDECR; + } + } + + /* Hypervisor virtualization interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_HVIRT) { + /* LPCR will be clear when not supported so this will work */ + bool hvice =3D !!(env->spr[SPR_LPCR] & LPCR_HVICE); + if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { + return PPC_INTERRUPT_HVIRT; + } + } + + /* External interrupt can ignore MSR:EE under some circumstances */ + if (env->pending_interrupts & PPC_INTERRUPT_EXT) { + bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); + bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); + /* HEIC blocks delivery to the hypervisor */ + if ((async_deliver && !(heic && FIELD_EX64_HV(env->msr) && + !FIELD_EX64(env->msr, MSR, PR))) || + (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { + return PPC_INTERRUPT_EXT; + } + } + if (FIELD_EX64(env->msr, MSR, CE)) { + /* External critical interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_CEXT) { + return PPC_INTERRUPT_CEXT; + } + } + if (async_deliver !=3D 0) { + /* Watchdog timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_WDT) { + return PPC_INTERRUPT_WDT; + } + if (env->pending_interrupts & PPC_INTERRUPT_CDOORBELL) { + return PPC_INTERRUPT_CDOORBELL; + } + /* Fixed interval timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_FIT) { + return PPC_INTERRUPT_FIT; + } + /* Programmable interval timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_PIT) { + return PPC_INTERRUPT_PIT; + } + /* Decrementer exception */ + if (env->pending_interrupts & PPC_INTERRUPT_DECR) { + return PPC_INTERRUPT_DECR; + } + if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { + return PPC_INTERRUPT_DOORBELL; + } + if (env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) { + return PPC_INTERRUPT_HDOORBELL; + } + if (env->pending_interrupts & PPC_INTERRUPT_PERFM) { + return PPC_INTERRUPT_PERFM; + } + /* Thermal interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_THERM) { + return PPC_INTERRUPT_THERM; + } + /* EBB exception */ + if (env->pending_interrupts & PPC_INTERRUPT_EBB) { + /* + * EBB exception must be taken in problem state and + * with BESCR_GE set. + */ + if (FIELD_EX64(env->msr, MSR, PR) && + (env->spr[SPR_BESCR] & BESCR_GE)) { + return PPC_INTERRUPT_EBB; + } + } + } + + return 0; +} + #define P9_UNUSED_INTERRUPTS \ (PPC_INTERRUPT_RESET | PPC_INTERRUPT_DEBUG | PPC_INTERRUPT_CEXT | \ PPC_INTERRUPT_WDT | PPC_INTERRUPT_CDOORBELL | PPC_INTERRUPT_FIT | \ @@ -1897,6 +2003,8 @@ static int ppc_next_unmasked_interrupt(CPUPPCState *e= nv) { switch (env->excp_model) { #if defined(TARGET_PPC64) + case POWERPC_EXCP_POWER8: + return p8_next_unmasked_interrupt(env); case POWERPC_EXCP_POWER9: case POWERPC_EXCP_POWER10: return p9_next_unmasked_interrupt(env); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975445; cv=none; d=zohomail.com; s=zohoarc; b=BWSF0blzwIhDCmNbSUjm5lCWVeR4qbREApf2/zUKsUHm6an4BTMNwIHSyDq1Gvi3leFZbQ3YVs13Icg26cnyFqGF7xwtnh3Oqe45KqJo7BCawW/uKql95WH87C+RlACUToJ5PFLdSDzmD2LSwPd3xNVf3O1AWSEFpM9pwLXjY2s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975445; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6mXlNPdAoj1FjmOYP8e40/ceUFFEafWriATngeoKtlo=; b=BDuVv9StavONKBtI9/qEM9Ki19RSTjaEszQeEs18iTskVi0FokS3IC41eTtn3B6BAp8/+/Qaa25F5z3KFGnlqKCQP98yfH4cqH2v4kezUndNredawy9u03FOBw9oiNjX+G/QRzd67Hg9ORjSsT1zsizh6xlMt4IG2b2foWLziFE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16669754449591016.9276415108444; Fri, 28 Oct 2022 09:44:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRV-0006Wy-VB; Fri, 28 Oct 2022 12:42:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSR4-0001L6-AT; Fri, 28 Oct 2022 12:42:22 -0400 Received: from mail-oi1-x22d.google.com ([2607:f8b0:4864:20::22d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSR0-0000Mc-Un; Fri, 28 Oct 2022 12:42:21 -0400 Received: by mail-oi1-x22d.google.com with SMTP id g10so6682711oif.10; Fri, 28 Oct 2022 09:42:17 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6mXlNPdAoj1FjmOYP8e40/ceUFFEafWriATngeoKtlo=; b=IHuR3dB0iQvUEswL0KViDXa24Yylm+liSEmbLOsCbrP/RInxMAZkHnw7Fuls113T/n i/ocn86DBmiyRfDld12/mKUA2KlnUS3A/9L1ZUOJ37/9+rLsITd/VHe88eQPD1dWLAlw RrzcLt8gy02qev5BPeyPTLjSZTZwg1BRQ5MTj3h5pQaCB2rIjxB6BRaje33sDTE2nIe2 Y6sIwQQB87C5PqPPaMhDhL1DlXL866uv6JF3DEzkimeSvkwrIBdoLO+KCDZuu0dT8cun NczptdqVO76SINhjx1L5wlaKJHzJybnyuWq8HGs9k187EkKhdV0WC8E/KW3hfspzzkuc hyjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6mXlNPdAoj1FjmOYP8e40/ceUFFEafWriATngeoKtlo=; b=E6SHfMWqn8LgMGAWqexhNvv30C+RPss/d1tGt0RCIGGGfz4iF9odddcNwTiHhm0D39 /SfpjilP1iyE1eI2Uxf0isPnUQ5kxi2V4GMGJvyniylI3otWYgHpZjabQ+5+QyEXds1G ePlLyh2XTf8+QpSPfMJZh6x2ngYu7QRrUG5ZBJxSWF2sEJpWPN99J5bYEmM5ju3AUB+g AZOt4+1wP4hdC8OezN4uGLU2kdKdT9QpVhetwQy5FQ540mbaoUVbdOkSOxVmqBthxFlg TjSlFeGLBlVQrAuv3c7H8C5bSFPa/SaEkBIxDpe39OeCUuvvEKV7s23B9IqzVLYDDfjC y9fg== X-Gm-Message-State: ACrzQf1OR0HCHTtJKrq6cZIc6G3aU5YFnFAyQMFek39m8UFwejmIySa/ JL1gEmmuzKlvWOT9daEISolCM038josPQg== X-Google-Smtp-Source: AMsMyM6SSdRLNibqc2z9OzSx9ywJ5NbeRWQ6xf9gFCIKOx4sRvik93V3LWoY7WnOXbq1pnS9yzHLlQ== X-Received: by 2002:a54:4196:0:b0:355:15ff:b43 with SMTP id 22-20020a544196000000b0035515ff0b43mr8934238oiy.200.1666975336420; Fri, 28 Oct 2022 09:42:16 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 31/62] target/ppc: remove unused interrupts from p8_next_unmasked_interrupt Date: Fri, 28 Oct 2022 13:39:20 -0300 Message-Id: <20221028163951.810456-32-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22d; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975445695100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Remove the following unused interrupts from the POWER8 interrupt masking method: - PPC_INTERRUPT_RESET: only raised for 6xx, 7xx, 970, and POWER5p; - Debug Interrupt: removed in Power ISA v2.07; - Hypervisor Virtualization: introduced in Power ISA v3.0; - Critical Input, Watchdog Timer, and Fixed Interval Timer: only defined for embedded CPUs; - Critical Doorbell: processor does not implement the "Embedded.Processor Control" category; - Programmable Interval Timer: 40x-only; - PPC_INTERRUPT_THERM: only raised for 970 and POWER5p; Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-14-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 45 +++++++--------------------------------- 1 file changed, 7 insertions(+), 38 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index c7b303a9a7..2bb636a439 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1685,14 +1685,17 @@ void ppc_cpu_do_interrupt(CPUState *cs) } =20 #if defined(TARGET_PPC64) +#define P8_UNUSED_INTERRUPTS \ + (PPC_INTERRUPT_RESET | PPC_INTERRUPT_DEBUG | PPC_INTERRUPT_HVIRT | \ + PPC_INTERRUPT_CEXT | PPC_INTERRUPT_WDT | PPC_INTERRUPT_CDOORBELL | \ + PPC_INTERRUPT_FIT | PPC_INTERRUPT_PIT | PPC_INTERRUPT_THERM) + static int p8_next_unmasked_interrupt(CPUPPCState *env) { bool async_deliver; =20 - /* External reset */ - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return PPC_INTERRUPT_RESET; - } + assert((env->pending_interrupts & P8_UNUSED_INTERRUPTS) =3D=3D 0); + /* Machine check exception */ if (env->pending_interrupts & PPC_INTERRUPT_MCK) { return PPC_INTERRUPT_MCK; @@ -1716,15 +1719,6 @@ static int p8_next_unmasked_interrupt(CPUPPCState *e= nv) } } =20 - /* Hypervisor virtualization interrupt */ - if (env->pending_interrupts & PPC_INTERRUPT_HVIRT) { - /* LPCR will be clear when not supported so this will work */ - bool hvice =3D !!(env->spr[SPR_LPCR] & LPCR_HVICE); - if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { - return PPC_INTERRUPT_HVIRT; - } - } - /* External interrupt can ignore MSR:EE under some circumstances */ if (env->pending_interrupts & PPC_INTERRUPT_EXT) { bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); @@ -1736,28 +1730,7 @@ static int p8_next_unmasked_interrupt(CPUPPCState *e= nv) return PPC_INTERRUPT_EXT; } } - if (FIELD_EX64(env->msr, MSR, CE)) { - /* External critical interrupt */ - if (env->pending_interrupts & PPC_INTERRUPT_CEXT) { - return PPC_INTERRUPT_CEXT; - } - } if (async_deliver !=3D 0) { - /* Watchdog timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_WDT) { - return PPC_INTERRUPT_WDT; - } - if (env->pending_interrupts & PPC_INTERRUPT_CDOORBELL) { - return PPC_INTERRUPT_CDOORBELL; - } - /* Fixed interval timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_FIT) { - return PPC_INTERRUPT_FIT; - } - /* Programmable interval timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_PIT) { - return PPC_INTERRUPT_PIT; - } /* Decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_DECR) { return PPC_INTERRUPT_DECR; @@ -1771,10 +1744,6 @@ static int p8_next_unmasked_interrupt(CPUPPCState *e= nv) if (env->pending_interrupts & PPC_INTERRUPT_PERFM) { return PPC_INTERRUPT_PERFM; } - /* Thermal interrupt */ - if (env->pending_interrupts & PPC_INTERRUPT_THERM) { - return PPC_INTERRUPT_THERM; - } /* EBB exception */ if (env->pending_interrupts & PPC_INTERRUPT_EBB) { /* --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975395; cv=none; d=zohomail.com; s=zohoarc; b=ByPui6ODYjYyjE+FD80QQeo93cPO45F+iLhAMDYdU401Z1u/5l0FdPgzOy7nvv2ViVFRtyUXZ7kB7ORKKi/VFpPIwOQ1TtQ2J2RMxFIvE4wFfNVoBg4El8tZ52VlLAqm1HeYgN3MQm9Vm6nIGCPrxzaOch+EIj/hocMxuJXCjIE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975395; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=wiYxq7eoyIQnNoKUnf45tLHZeCmNvjCBnqLGh5QS7zQ=; b=AeKPieDZwWLP33cvAnSbI0DUMxlN8uraULJ98nkO6laxJBD504tYl0VFH7VKVNhFXnTvc05Nf/MkO3t6GDbxU51COLL4NKpUh7BDcf4VD3fePWrIQ6ubGQKg2ItZrD/CPu1bBYct2LAdaNezUc78lyWEsxVh6D+cJ6+aJ0W9Xao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975395383743.7430153498366; Fri, 28 Oct 2022 09:43:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRX-0006ph-T5; Fri, 28 Oct 2022 12:42:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSR7-0001il-Hk; Fri, 28 Oct 2022 12:42:25 -0400 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSR4-0000Ne-8c; Fri, 28 Oct 2022 12:42:24 -0400 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-13ba86b5ac0so6919251fac.1; Fri, 28 Oct 2022 09:42:21 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wiYxq7eoyIQnNoKUnf45tLHZeCmNvjCBnqLGh5QS7zQ=; b=JdQ2MKegyyLnbNIfumtNMiRRrwlW2U6zdmB2KKmohLshEwpU9OqcysKxmjBg+fWVRG 4xBkStGquBe4T9b9C5cHLYx4tbcjXuTRn+HkoLgfU1/C+7gqS6JBJFY/qX5ThR1Nw19e DTvpcxVgWo4SFRge2fXSDzyj2hyHyjD+GX5mpzeP5AuD+phnBuJl9MYhe92VWp7eZ+Uv VaRKqM4W5tDO+tZNOIW9xMyRaDH2sbqzKfyAQdyOMHC8XWJbRQoX/hWPxH0cS+9SksZW YnUbqPvKdZQZiXyEeKEldHWu/WGjnSeWdGrMKULiQc1lOTB+7OsUD7+n8mfMXMp9gYGY WlVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wiYxq7eoyIQnNoKUnf45tLHZeCmNvjCBnqLGh5QS7zQ=; b=g5TVyabvI0MPpz8FGAx+fCiOWklpJQ7PJNBckI7g9/IQBND8P9+27HXI+tEFPpEuGw /TBZYOPnupNBpZUd76GV7eoG+He6V/qUZtT3NLkZZatOToCFJV5jF2IEhF9zYaCbABQC uyZqRND/7VuKvjFIORISrT1nc8wxNC+hI+RgNQI+YhTWT3KloMH7Jnb6A1WqgP4TztD6 Bq3WMAD7Jfi4r0Oxnv6Gy8M2alazUfVFcxxkGm+ZpDhrcwxARWfHdcZqN6zKcQhkQTj5 GNxzOUEpXIG1CLAVlasepzSKuhZknEpDu6psLy0fYk4W3i5K/rm2oOey+bzBp74/diHo qn6Q== X-Gm-Message-State: ACrzQf3atOGB0RYs/3SP2zLfkyW8JNGVEjOJ/MpaCQ4AeiXNjrCgmaoT mW1zOVTntlzCRA5oN9f6pBjDjZcFDRe+Og== X-Google-Smtp-Source: AMsMyM7yw6paBbTMoe/e9C7oRzEgzTc9DDCdGu/2VsBaCoxaMW1UrKQt97BXo/f3HEY+BvRwdQaBmg== X-Received: by 2002:a05:6870:e88a:b0:13b:6e13:a9a5 with SMTP id q10-20020a056870e88a00b0013b6e13a9a5mr26559oan.264.1666975340208; Fri, 28 Oct 2022 09:42:20 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 32/62] target/ppc: create an interrupt deliver method for POWER8 Date: Fri, 28 Oct 2022 13:39:21 -0300 Message-Id: <20221028163951.810456-33-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::29; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x29.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975397434100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst The new method is identical to ppc_deliver_interrupt, processor-specific code will be added/removed in the following patches. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-15-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 107 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 2bb636a439..c2ebb5280f 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1984,6 +1984,110 @@ static int ppc_next_unmasked_interrupt(CPUPPCState = *env) } =20 #if defined(TARGET_PPC64) +static void p8_deliver_interrupt(CPUPPCState *env, int interrupt) +{ + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + + switch (interrupt) { + case PPC_INTERRUPT_RESET: /* External reset */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; + powerpc_excp(cpu, POWERPC_EXCP_RESET); + break; + case PPC_INTERRUPT_MCK: /* Machine check exception */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; + powerpc_excp(cpu, POWERPC_EXCP_MCHECK); + break; + + case PPC_INTERRUPT_HDECR: /* Hypervisor decrementer exception */ + /* HDEC clears on delivery */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDECR; + powerpc_excp(cpu, POWERPC_EXCP_HDECR); + break; + case PPC_INTERRUPT_HVIRT: /* Hypervisor virtualization interrupt */ + powerpc_excp(cpu, POWERPC_EXCP_HVIRT); + break; + + case PPC_INTERRUPT_EXT: + if (books_vhyp_promotes_external_to_hvirt(cpu)) { + powerpc_excp(cpu, POWERPC_EXCP_HVIRT); + } else { + powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL); + } + break; + case PPC_INTERRUPT_CEXT: /* External critical interrupt */ + powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); + break; + + case PPC_INTERRUPT_WDT: /* Watchdog timer on embedded PowerPC */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; + powerpc_excp(cpu, POWERPC_EXCP_WDT); + break; + case PPC_INTERRUPT_CDOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; + powerpc_excp(cpu, POWERPC_EXCP_DOORCI); + break; + case PPC_INTERRUPT_FIT: /* Fixed interval timer on embedded PowerPC */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; + powerpc_excp(cpu, POWERPC_EXCP_FIT); + break; + case PPC_INTERRUPT_PIT: /* Programmable interval timer on embedded ppc= */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; + powerpc_excp(cpu, POWERPC_EXCP_PIT); + break; + case PPC_INTERRUPT_DECR: /* Decrementer exception */ + if (ppc_decr_clear_on_delivery(env)) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; + } + powerpc_excp(cpu, POWERPC_EXCP_DECR); + break; + case PPC_INTERRUPT_DOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; + if (is_book3s_arch2x(env)) { + powerpc_excp(cpu, POWERPC_EXCP_SDOOR); + } else { + powerpc_excp(cpu, POWERPC_EXCP_DOORI); + } + break; + case PPC_INTERRUPT_HDOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; + powerpc_excp(cpu, POWERPC_EXCP_SDOOR_HV); + break; + case PPC_INTERRUPT_PERFM: + env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; + powerpc_excp(cpu, POWERPC_EXCP_PERFM); + break; + case PPC_INTERRUPT_THERM: /* Thermal interrupt */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; + powerpc_excp(cpu, POWERPC_EXCP_THERM); + break; + case PPC_INTERRUPT_EBB: /* EBB exception */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; + if (env->spr[SPR_BESCR] & BESCR_PMEO) { + powerpc_excp(cpu, POWERPC_EXCP_PERFM_EBB); + } else if (env->spr[SPR_BESCR] & BESCR_EEO) { + powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL_EBB); + } + break; + case 0: + /* + * This is a bug ! It means that has_work took us out of halt with= out + * anything to deliver while in a PM state that requires getting + * out via a 0x100 + * + * This means we will incorrectly execute past the power management + * instruction instead of triggering a reset. + * + * It generally means a discrepancy between the wakeup conditions = in the + * processor has_work implementation and the logic in this functio= n. + */ + assert(!env->resume_as_sreset); + break; + default: + cpu_abort(cs, "Invalid PowerPC interrupt %d. Aborting\n", interrup= t); + } +} + static void p9_deliver_interrupt(CPUPPCState *env, int interrupt) { PowerPCCPU *cpu =3D env_archcpu(env); @@ -2172,6 +2276,9 @@ static void ppc_deliver_interrupt(CPUPPCState *env, i= nt interrupt) { switch (env->excp_model) { #if defined(TARGET_PPC64) + case POWERPC_EXCP_POWER8: + p8_deliver_interrupt(env, interrupt); + break; case POWERPC_EXCP_POWER9: case POWERPC_EXCP_POWER10: p9_deliver_interrupt(env, interrupt); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975613; cv=none; d=zohomail.com; s=zohoarc; b=b/rmROK3NBQuHx8yCo0KmF1BSSt64BxDW20VZ9Ya8VoExzMizf5Ub2BQb6X3sAl+ZCO84P+WSXnY8R5+qC4DbTqAcmGNMXpL74VkfF/gvB++uEuCy5LdYzngWI1r8pu3q+aH8PHjRBFbEecN6ApoxoQATPenYzPOsJS/DSQzknw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975613; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=M4Fxp4cODLcYZIEwNi6y1xkrYaW+gf2ZSNXcHPPunCE=; b=Kr4vyqHjT9+LCpkToF6fzIc4xFfsGPtaRcYvjXJfjEVHzXpxbK4k+2Zcfmzm7UmvSpodrD4KRpxt3OsqsaQDltD91n6lQvH38tOw7C2FK06PGBP+QFv216MaOmAwLJoGGjB4X2wbXcWhJJnZJH3BQ5xZYGZiGvkTPEjv2GLijeY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975613902242.11789115569013; Fri, 28 Oct 2022 09:46:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRn-0008QY-0y; Fri, 28 Oct 2022 12:43:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRC-0002NP-7r; Fri, 28 Oct 2022 12:42:30 -0400 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSR9-0000PF-CZ; Fri, 28 Oct 2022 12:42:29 -0400 Received: by mail-oi1-x22f.google.com with SMTP id y67so6721967oiy.1; Fri, 28 Oct 2022 09:42:26 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=M4Fxp4cODLcYZIEwNi6y1xkrYaW+gf2ZSNXcHPPunCE=; b=O+pntgj6D17DGk/9W/WgwNTcbhYJyU3VII3vRwrG8tSONeqb/BkGPKOg7zj5nZno6e srJozGxVCuak/A4xhFEoLtN2Axwn+2ktffczLBKJAH+AfSval71GQrp0aKiXZGdP+AVo zPmSC/I4kzKk/9hQuX+eeSc6MwGkv3+RzQbAVcsXLn6pSa1eVNRtVDY4fLaOPLnJRoi9 cM/vf05gYdJfUVmY0w+1U3bg0r6gsGXWty/4Z7vFodKdMvfVhxiQDVwpVGJuUPTMqcWH JfQ0wtIgA1dePjEWy5TeONkLgjLmuHBc2xR1RiefuxeqmEoX/zODsLv1qDufYD2/UFhb Tj2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M4Fxp4cODLcYZIEwNi6y1xkrYaW+gf2ZSNXcHPPunCE=; b=Q6Z3i/yrQysMez/LZHgayUCoVn8eNC2DQFGX/RDbl7qz3ZcIfoexJ1pgDB6EANeI/E cvol31Z7t/TRmdnpDvJ3bg21YKWXgKQYnXWl/YEm0eWaHx+HyLJ4iexcJzHCQqbGApSU HFsBq0vQgtSg5t6xvYh3915rsIEMa62QyZX52b8KPKCE/2N7dJelV6GtqXA8s9yDU7E9 g5ZV0kwpR2W694ebkrRii+cXBf2cH8j2aV8cWB/LzSVc7n4gJJvmTriIohfhWo/F/HEz 95xDGEDqul3FBVuySPPcqvanYME6Pr+rZttwmzNOxyn8MYKm8bI/KGO+YBRDksRHb1+i nhBg== X-Gm-Message-State: ACrzQf3S6FXi6RaE0roAVNsB+LX0RxjP+NevO96Qz20SLJqU6ImSElAB oUuqJqo9u4xTyZkZu26m4fyHVYxDC7rZPg== X-Google-Smtp-Source: AMsMyM5HmxuFKWJAr1amQrInkv3v4707gXc3fniFtwNaGXMbgulohOHESye87+ueorTEyqLuAnaEIQ== X-Received: by 2002:a05:6808:1205:b0:354:2815:4f3c with SMTP id a5-20020a056808120500b0035428154f3cmr8700525oil.26.1666975345408; Fri, 28 Oct 2022 09:42:25 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 33/62] target/ppc: remove unused interrupts from p8_deliver_interrupt Date: Fri, 28 Oct 2022 13:39:22 -0300 Message-Id: <20221028163951.810456-34-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22f; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975614572100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Remove the following unused interrupts from the POWER8 interrupt processing method: - PPC_INTERRUPT_RESET: only raised for 6xx, 7xx, 970 and POWER5p; - Debug Interrupt: removed in Power ISA v2.07; - Hypervisor Virtualization: introduced in Power ISA v3.0; - Critical Input, Watchdog Timer, and Fixed Interval Timer: only defined for embedded CPUs; - Critical Doorbell: processor does not implement the "Embedded.Processor Control" category; - Programmable Interval Timer: 40x-only; - PPC_INTERRUPT_THERM: only raised for 970 and POWER5p; Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-16-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index c2ebb5280f..21cd8d02af 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1990,10 +1990,6 @@ static void p8_deliver_interrupt(CPUPPCState *env, i= nt interrupt) CPUState *cs =3D env_cpu(env); =20 switch (interrupt) { - case PPC_INTERRUPT_RESET: /* External reset */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; - powerpc_excp(cpu, POWERPC_EXCP_RESET); - break; case PPC_INTERRUPT_MCK: /* Machine check exception */ env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; powerpc_excp(cpu, POWERPC_EXCP_MCHECK); @@ -2004,9 +2000,6 @@ static void p8_deliver_interrupt(CPUPPCState *env, in= t interrupt) env->pending_interrupts &=3D ~PPC_INTERRUPT_HDECR; powerpc_excp(cpu, POWERPC_EXCP_HDECR); break; - case PPC_INTERRUPT_HVIRT: /* Hypervisor virtualization interrupt */ - powerpc_excp(cpu, POWERPC_EXCP_HVIRT); - break; =20 case PPC_INTERRUPT_EXT: if (books_vhyp_promotes_external_to_hvirt(cpu)) { @@ -2015,26 +2008,7 @@ static void p8_deliver_interrupt(CPUPPCState *env, i= nt interrupt) powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL); } break; - case PPC_INTERRUPT_CEXT: /* External critical interrupt */ - powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); - break; =20 - case PPC_INTERRUPT_WDT: /* Watchdog timer on embedded PowerPC */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; - powerpc_excp(cpu, POWERPC_EXCP_WDT); - break; - case PPC_INTERRUPT_CDOORBELL: - env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; - powerpc_excp(cpu, POWERPC_EXCP_DOORCI); - break; - case PPC_INTERRUPT_FIT: /* Fixed interval timer on embedded PowerPC */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; - powerpc_excp(cpu, POWERPC_EXCP_FIT); - break; - case PPC_INTERRUPT_PIT: /* Programmable interval timer on embedded ppc= */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; - powerpc_excp(cpu, POWERPC_EXCP_PIT); - break; case PPC_INTERRUPT_DECR: /* Decrementer exception */ if (ppc_decr_clear_on_delivery(env)) { env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; @@ -2057,10 +2031,6 @@ static void p8_deliver_interrupt(CPUPPCState *env, i= nt interrupt) env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; powerpc_excp(cpu, POWERPC_EXCP_PERFM); break; - case PPC_INTERRUPT_THERM: /* Thermal interrupt */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; - powerpc_excp(cpu, POWERPC_EXCP_THERM); - break; case PPC_INTERRUPT_EBB: /* EBB exception */ env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; if (env->spr[SPR_BESCR] & BESCR_PMEO) { --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975617; cv=none; d=zohomail.com; s=zohoarc; b=dI3dlK11KVqeLN20+tp6aW7umr/sRqIvC3kA9wQhdhhdX9BLD0vNUK+hrmXM8qn7botC78670iGdmEjwm8jTTvGnNL2kOy8i0NOk632BKmeXT3wkY63mjNsDH1UzeKgzoPcp1b17VR3ZsymaqcMsOcfLPNw+/s6WrxesuB/ahz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975617; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IjgKbF/AAa+fbA/vhvUHtv60RHCTsR4Z7Jy9oe4Llcc=; b=kztINrj+hRG2nkaeXIT4VkXehs9Jc+JVJGPDHvRyK+7D0fZImS6CMORi8Ps8RFrn4+EXOmiigHlJzNyNVGrVhvPhUhCP+ReRDWVBknav7vONurxqs/B0zBgbGiLGaJT18nGB7iYkJD5/rcSe3UJT62M1ku0re8Uujlw5QSSqHKg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166697561703543.203304855003694; Fri, 28 Oct 2022 09:46:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSS6-00035Y-6U; Fri, 28 Oct 2022 12:43:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRO-000513-Ho; Fri, 28 Oct 2022 12:42:42 -0400 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRD-0000QM-Bv; Fri, 28 Oct 2022 12:42:42 -0400 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-1322d768ba7so6893470fac.5; Fri, 28 Oct 2022 09:42:30 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IjgKbF/AAa+fbA/vhvUHtv60RHCTsR4Z7Jy9oe4Llcc=; b=R8CImn88tY/WsTJ8tYjO1TDJuHeDJRLRyPt1V3Zr4A3O5oSaqf34u3aNUQ77PAn2p1 X5o7L0A9CtUlWJOV9SdfWAOSpv2M+oac0UzN6XHIfwCFjnLhu0clGddCzS1luPxr6+7Q plPpxdq7EYAbSZkdXHI5GHSMlAg+XBijwKQMW0qAjS/6lmC8OqnY0eNIBCHULlTZPqLs hFfl6qmbFhrpv+f8JTpKIF9cbkL6zhu2sfZWGOlM6Vyufa2yXx/m9j6KPkhurDQnRxmv eCRg8YoER/eLEbQGAWUBQ9LOtA8Nj0lIXytzzXBqJ8DNzApvGP7N5EajO1wsfmFkaD0l NVOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IjgKbF/AAa+fbA/vhvUHtv60RHCTsR4Z7Jy9oe4Llcc=; b=HHie6a+LtcZxZjauN/E2Yb3qm1jSL0TbW52qPltN5I//oHnT4XgDvI3f6myjUR0MIe /mkE0Zyb6CuToYLHyWRMPmtpy1WRDpcR81I3wt8FtrP6QjJUXsv/eCLfJii0Zyr0eyR0 og2l0n9cTbXXECyAfrAZQ77fMj1FUZS8j7b44quifNTqtGaaPiiBEAGC2SkdXqluoWAp yRCynZzoVSAfdgE8szUtduAGOvSKwnWeC85s/2zUxGnG33sw+/1up3BAnlhdlguUI3Je 0RojiqAIT1aYgLkWce/eK12hP8A8NL5b34S7XKe3TKygbheJ/W3UHi2YNmG6MjM9USNF BQnQ== X-Gm-Message-State: ACrzQf1kOQjGhbo4xEAf4+Pfa9WkWkgIEO9Gp2cGa0yTzLYHMXadiCLf nNc3niY6NPbOGxjyIt+6Ez8Wbe8DiB50gQ== X-Google-Smtp-Source: AMsMyM5GO9nwupxS1B1757tZPJrL2rrSVpF95kukJoX0bVLCBFdxPPh7qM1LbrbDt6A2THV6puOWzA== X-Received: by 2002:a05:6870:390b:b0:13b:f4f1:7d7e with SMTP id b11-20020a056870390b00b0013bf4f17d7emr9619371oap.285.1666975349500; Fri, 28 Oct 2022 09:42:29 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 34/62] target/ppc: remove generic architecture checks from p8_deliver_interrupt Date: Fri, 28 Oct 2022 13:39:23 -0300 Message-Id: <20221028163951.810456-35-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::31; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x31.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975618586100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-17-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 21cd8d02af..b4afdc81ca 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2010,9 +2010,6 @@ static void p8_deliver_interrupt(CPUPPCState *env, in= t interrupt) break; =20 case PPC_INTERRUPT_DECR: /* Decrementer exception */ - if (ppc_decr_clear_on_delivery(env)) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; - } powerpc_excp(cpu, POWERPC_EXCP_DECR); break; case PPC_INTERRUPT_DOORBELL: --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975868; cv=none; d=zohomail.com; s=zohoarc; b=FeCOMQX/pDoPlSO/MjWAdmk1kPYJRoAHbQDCEA9uTLMu46w1BKobFbSFU4gdRXC5CLyqAAMmICbLPqOe/oTJUa47UTD8XmHlRdxzrnJ0ramSMfDw2RxCOX9pZM+2/o2Jevy5ppEbC475cJ9gq6VyQeFAh2+nISXIwtb0gUHm1xE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975868; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PhZH9eEhK/LK0yiGNchDlHoTfbzpWkh+jphA3Cd29DM=; b=D7R8ZFqZNuClYtjXdTi8SIlX/QhBcw3SyZJ8CPvOrI7Igu5Jh8I98603bYYU76z3UN5ZrQgx/YlNQmeTO/+RPS5vXZlNSuqqeOdpjEy1Akiu8hkVB9YXyMuY66G4z9CC7YkgsptJfu+ZuuD0rHFw/mbH7gONHJ+E2UrPLrIcOXs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975868807155.32258271607031; Fri, 28 Oct 2022 09:51:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRu-00016B-Eo; Fri, 28 Oct 2022 12:43:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRI-0003oF-UC; Fri, 28 Oct 2022 12:42:36 -0400 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRH-0000Sc-5C; Fri, 28 Oct 2022 12:42:36 -0400 Received: by mail-ot1-x332.google.com with SMTP id v40-20020a056830092800b00661e37421c2so3280042ott.3; Fri, 28 Oct 2022 09:42:34 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PhZH9eEhK/LK0yiGNchDlHoTfbzpWkh+jphA3Cd29DM=; b=UfO5IXK0oAuE23fk1CLUPDrPWd/bwwZ5VGaZ6Q7WEi+GgNoGQ6gOih8C8APxFCkR2X ZJ2I1olEGxXDai0JQVfwASTLflolUUWCqZsN4O02bJRVo8rPWwhlzxLPdv5DaZ+Qpu0y AiEDr8sRlkhRffug3WWTggdXYO/AUl+SPD4Li0afDy1/l1RvAePlvf8ax0re9fqpEjc6 +XVw0+xOH98wTR7MNZDaonzaQq4totrCHFlhRzq+pq8LvpF8ApZ2JdAB5Cr3z7K9cN5B jMlnX19SWVhKavAxJBUEovzRgYNjPdX7EqfAABUGJWG7sOmUdMQ9K0doPGxhaSzptvsT X1Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PhZH9eEhK/LK0yiGNchDlHoTfbzpWkh+jphA3Cd29DM=; b=Znnfn9XPbt/cB3ggbnngLbl5IjKmpAVrDfLp7fOC8zOdaOUeo64D81DPDLgQyilvAa 6NarQd/8hzpbPe/eaWsQGqWkn5YX3vKr+XYQPDrCLT+y6VIjocWvxnvnzOS4fBguwf4Z afFRAhrgWDb2L3Fnpe1QP/Kabn5FCo8n+K2RYaKOoK9+dWOYidBZd2JELqsZe3A4TnHG 7lgUglWbcYFofqbp9eaoCyA3nWe4kGOfv76qL4lF2j/S0HVRbxdmj4a1TZ7dXuEf/tpf QLYAjCgr8VNAIHgxCOxUg1j6b59jEQVqBBbfXNCuVBAEph+yroFOcxbtkbmyKzTAAJvz DmBg== X-Gm-Message-State: ACrzQf1Dw5JdJnqtiSa2e07EgRlrCT77NxIscmLy6u9a/qe0c0BLtkLe +cnLwYEDgWvZEQmO+u3cFa/6wJ3JBnYwdg== X-Google-Smtp-Source: AMsMyM4GURqSzsMDQOmGKQM/rkFNPcBPef5munOYoo0Tmng+fPc+otOzwS6wk/eY0T7yZNEYsuvCTA== X-Received: by 2002:a9d:12a8:0:b0:661:a06f:33d7 with SMTP id g37-20020a9d12a8000000b00661a06f33d7mr102956otg.237.1666975353313; Fri, 28 Oct 2022 09:42:33 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 35/62] target/ppc: move power-saving interrupt masking out of cpu_has_work_POWER8 Date: Fri, 28 Oct 2022 13:39:24 -0300 Message-Id: <20221028163951.810456-36-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::332; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x332.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975870720100006 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Move the interrupt masking logic out of cpu_has_work_POWER8 in a new method, p8_interrupt_powersave, that only returns an interrupt if it can wake the processor from power-saving mode. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-18-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu_init.c | 61 +++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 423d99d8d3..922390b938 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -6133,6 +6133,38 @@ static bool ppc_pvr_match_power8(PowerPCCPUClass *pc= c, uint32_t pvr, bool best) return true; } =20 +static int p8_interrupt_powersave(CPUPPCState *env) +{ + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE2)) { + return PPC_INTERRUPT_EXT; + } + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE3)) { + return PPC_INTERRUPT_DECR; + } + if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { + return PPC_INTERRUPT_MCK; + } + if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { + return PPC_INTERRUPT_HMI; + } + if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE0)) { + return PPC_INTERRUPT_DOORBELL; + } + if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE1)) { + return PPC_INTERRUPT_HDOORBELL; + } + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + return 0; +} + static bool cpu_has_work_POWER8(CPUState *cs) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); @@ -6142,34 +6174,7 @@ static bool cpu_has_work_POWER8(CPUState *cs) if (!(cs->interrupt_request & CPU_INTERRUPT_HARD)) { return false; } - if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE2)) { - return true; - } - if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE3)) { - return true; - } - if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { - return true; - } - if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { - return true; - } - if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE0)) { - return true; - } - if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE1)) { - return true; - } - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return true; - } - return false; + return p8_interrupt_powersave(env) !=3D 0; } else { return FIELD_EX64(env->msr, MSR, EE) && (cs->interrupt_request & CPU_INTERRUPT_HARD); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975502; cv=none; d=zohomail.com; s=zohoarc; b=kE0tJl2I31KSYvge5ivLG/k3Z7L7Yg/i1/sU88Olidw0ACLgNeJquRYKB7jPNacUtwVTEN9y250psBwC4/WWQd53SNd77SlgBnIO1qIcwuuWeKIBsKeBwESWQBlBlWhA60fyZBqeXMy60rXZ65FMZ5XavJTD2YLy8pe3ZpuBVBY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975502; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PMoGF5i1tJZT1zlxc/0QXO8meU72w5P3bCW326uxEso=; b=fhpIWee8D1i+Nqj+XGMOz8wA4R3LLp13YjbHSS+YCzC3ZpmpM2P0ACZvbitzXCmiE2HdWX1UJvQmELW82GY6MsR6FZJpUB7NMmEfC5AhbWUL+/llXfXo+zZ7RLFJ9jPpOtGEnnVekel2u9E6IHKTj4bbsBugX4CSMxLI5qd96yg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16669755021421005.1050690934828; Fri, 28 Oct 2022 09:45:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSRx-0001ck-CK; Fri, 28 Oct 2022 12:43:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRN-0004i9-6p; Fri, 28 Oct 2022 12:42:41 -0400 Received: from mail-oa1-x2c.google.com ([2001:4860:4864:20::2c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRL-0000Ty-Fq; Fri, 28 Oct 2022 12:42:40 -0400 Received: by mail-oa1-x2c.google.com with SMTP id 586e51a60fabf-13bef14ea06so6895308fac.3; Fri, 28 Oct 2022 09:42:38 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PMoGF5i1tJZT1zlxc/0QXO8meU72w5P3bCW326uxEso=; b=ZoI7A7s1Vm3siJaaMGGDJ1rPZ+c/eYzbVk2b/ntjhOXkCXhIOb0B6AooVeSuJ729rQ ULEGJJASF7UH+NX3beLV8W+W9UjFo1Uc2KggKmF7+FNJvoBIebP+f/x4UokxKzquoe1a WImNGXkDpkcvLYvLYuYBpE1QTx3wGxJVuxYquC/kOaBLCRHYB4oqJfPuAPd5I3jnvDH9 B2//zjrjZ8A7cZytNx8nBMpPC1vvPRKR8AKlQsZMNJNtufk8mhNmjsDbVNt8+4HYUu0i OWIpUCFea1EUkDqxt01EiIX/aNLnMH318sn1EGsTtd0iuBBGzSXDFbQkRfAr4oMnY8UT E//w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PMoGF5i1tJZT1zlxc/0QXO8meU72w5P3bCW326uxEso=; b=67fKqRg2fFQGOF2DXV/zRMduvTZce2zCHd1wFuRiflMhoJcBmlI4GL0Y/3mb/gTRtc CdkWbe7u4Tj4HGGkkm9N7MVULlguHoBgWfq36iwx3xrlLeWL8a2eM6Sc/9ML24tH/chY XXarN67enBDNv+izGKabxWqhIiB2o2NGllfiK8O5T/KKhntNV40ULVa7v0m9Hu0nZDQZ wshABo5I4st/2OoCgCoYwwN2xM+RELNlecR4OWOsgGxH6oWBUFtdyBdbM7hNghu0BpW2 Rw4yEHwxa+acy0RbFIikmHLeE8m6Edt+Ev+YxOfEXySORZrkGSnTTGaVwntuUkHcMB8k 8c2Q== X-Gm-Message-State: ACrzQf2uhgSgS2jEFL5eOgbqbU7eMja6f/bDPSsBbyk0X2ZjmK0ayfkj nE92CSsTF9Id/vMBgzOBw0k3EB7ql5yLYg== X-Google-Smtp-Source: AMsMyM5etvuzJOPZxsAd1Cuuwq3FlCFtetd9wJR8Ybe6T6GWeIvee3a4ZJOE0m0gSELFiRZztSwaCg== X-Received: by 2002:a05:6870:4798:b0:12c:989b:a3b7 with SMTP id c24-20020a056870479800b0012c989ba3b7mr9616966oaq.181.1666975357607; Fri, 28 Oct 2022 09:42:37 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 36/62] target/ppc: add power-saving interrupt masking logic to p8_next_unmasked_interrupt Date: Fri, 28 Oct 2022 13:39:25 -0300 Message-Id: <20221028163951.810456-37-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2c; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975503915100005 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Export p8_interrupt_powersave and use it in p8_next_unmasked_interrupt. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-19-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu_init.c | 2 +- target/ppc/excp_helper.c | 24 ++++++++++++------------ target/ppc/internal.h | 1 + 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 922390b938..68ae22d1f4 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -6133,7 +6133,7 @@ static bool ppc_pvr_match_power8(PowerPCCPUClass *pcc= , uint32_t pvr, bool best) return true; } =20 -static int p8_interrupt_powersave(CPUPPCState *env) +int p8_interrupt_powersave(CPUPPCState *env) { if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && (env->spr[SPR_LPCR] & LPCR_P8_PECE2)) { diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index b4afdc81ca..9fa75c55c9 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1692,28 +1692,28 @@ void ppc_cpu_do_interrupt(CPUState *cs) =20 static int p8_next_unmasked_interrupt(CPUPPCState *env) { - bool async_deliver; + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D CPU(cpu); + /* Ignore MSR[EE] when coming out of some power management states */ + bool msr_ee =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sreset; =20 assert((env->pending_interrupts & P8_UNUSED_INTERRUPTS) =3D=3D 0); =20 + if (cs->halted) { + /* LPCR[PECE] controls which interrupts can exit power-saving mode= */ + return p8_interrupt_powersave(env); + } + /* Machine check exception */ if (env->pending_interrupts & PPC_INTERRUPT_MCK) { return PPC_INTERRUPT_MCK; } =20 - /* - * For interrupts that gate on MSR:EE, we need to do something a - * bit more subtle, as we need to let them through even when EE is - * clear when coming out of some power management states (in order - * for them to become a 0x100). - */ - async_deliver =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sres= et; - /* Hypervisor decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_HDECR) { /* LPCR will be clear when not supported so this will work */ bool hdice =3D !!(env->spr[SPR_LPCR] & LPCR_HDICE); - if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { + if ((msr_ee || !FIELD_EX64_HV(env->msr)) && hdice) { /* HDEC clears on delivery */ return PPC_INTERRUPT_HDECR; } @@ -1724,13 +1724,13 @@ static int p8_next_unmasked_interrupt(CPUPPCState *= env) bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); /* HEIC blocks delivery to the hypervisor */ - if ((async_deliver && !(heic && FIELD_EX64_HV(env->msr) && + if ((msr_ee && !(heic && FIELD_EX64_HV(env->msr) && !FIELD_EX64(env->msr, MSR, PR))) || (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { return PPC_INTERRUPT_EXT; } } - if (async_deliver !=3D 0) { + if (msr_ee !=3D 0) { /* Decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_DECR) { return PPC_INTERRUPT_DECR; diff --git a/target/ppc/internal.h b/target/ppc/internal.h index 41e79adfdb..9069874adb 100644 --- a/target/ppc/internal.h +++ b/target/ppc/internal.h @@ -308,6 +308,7 @@ static inline int ger_pack_masks(int pmsk, int ymsk, in= t xmsk) =20 #if defined(TARGET_PPC64) int p9_interrupt_powersave(CPUPPCState *env); +int p8_interrupt_powersave(CPUPPCState *env); #endif =20 #endif /* PPC_INTERNAL_H */ --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975480; cv=none; d=zohomail.com; s=zohoarc; b=b7U3hkzGUtITevzMWBU4bZlAFIe40IyEWaffESM6zLjzqBRIyW6eTakwRGCv3MwsL0lIN39OAZLoBTjJDCyK2Zfy7c6ycLugsCXR9IKUVtgHGJvCfpr0HooEa6naFhv5LtGNE6UiEmqg34q9Q5+DG9+cypqMgG9sV4KLWTYavms= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975480; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=yPavTNlQ07S4mnLlTlA9khW+XLhgi0uIRg/ayMaCQrA=; b=nUCSzleKhuG/w204fNdWeOC5cHLaefoU8LrZ2bDf2EAi990AtVQgqJVKzr5/zh9VlA0tgGpT7tcZEywbUqwvyo8YT/WXr9GHmZhCQniTui2bFx2ceerDQekJnqCw8m/Wt7KOu9MiVeWbUCpiMCP2Cll9gnhI386/DftZK+jzO5Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166697548024778.42832217363173; Fri, 28 Oct 2022 09:44:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSB-00042f-8s; Fri, 28 Oct 2022 12:43:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRR-0005iN-U0; Fri, 28 Oct 2022 12:42:46 -0400 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRP-0000VD-2v; Fri, 28 Oct 2022 12:42:45 -0400 Received: by mail-oi1-x236.google.com with SMTP id u132so6766267oib.0; Fri, 28 Oct 2022 09:42:42 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yPavTNlQ07S4mnLlTlA9khW+XLhgi0uIRg/ayMaCQrA=; b=XXoT3u9DHzxzX0NBrKovN0bgfysq5QMRdvJdxu+L3BulMNfwq7+loiXw1WCHDlS1bh XQ1+sWqzu4YejAJAsXbBbeJr/6fuGlzIG6iR0mBgbYvYvaqeHi73VIykmrp7QtWcmHmU VIEkgKJYgH/4WA0dyuE1qbYEytRBNhh+5I/j5a1r5HR7E18AvhVNcOIbxzFZqYIa8R3+ sPeGFgKG+2ccZff3GiQWPT2j2Ka2sYEc1INkFixuGuz32g2zrqbf2yB8R8mnFXbN3gVG CoiAoT7canOAbwFeW0/CF/jtCnTpnssLUXxqyl4rJxua1dz9miJR8N3cupITgPgRZrzm Qsdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yPavTNlQ07S4mnLlTlA9khW+XLhgi0uIRg/ayMaCQrA=; b=70NwQX3cQcIAbSXJxD5kN2KFwKk8KTi0Q51cSxd9sJYTtiz/CKeSK1O/LMxx4ovXII zAM5wORvM5LMzyEfG3lRDZXDHmX2ID7QvjFtlwnfc36Mm7ych9PQSd45sUbUc31kIpRD 8oNqTjRhLd92WVu54xFu9tqRiidKLMRsjiJQoLEOm/mV0BhtQRTjemAzQ+AZAZbx+4Mj 8lmTAc3PRbKpdpTTOuCg652BEnTWQvrj9pAtuyFWh1skBsLXJS9OfeKx7t+Ch01O/D5h UDDQYZbixDrozLwgvTdTzcGo346++N4KNcjKUcVmSBON2Nv5jTplfP+V0T8hlk0Sy64A wc/w== X-Gm-Message-State: ACrzQf2BYwCVTEV5gaP23iD+ZWHExxfgJld+AdcDN7UA61Wf25icw+oY dNpb8epratSXE8c4/a5lPed6vHtTnuUKyA== X-Google-Smtp-Source: AMsMyM4cD0Ggs19vUBl5VI8MNzqlWEsLcoxvw3F/Q7XUYhwj3xGIHlD/TH4saIFXWGqFJUp+O/f5FA== X-Received: by 2002:a05:6808:1407:b0:359:a7d2:633d with SMTP id w7-20020a056808140700b00359a7d2633dmr8733449oiv.237.1666975361427; Fri, 28 Oct 2022 09:42:41 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 37/62] target/ppc: create an interrupt masking method for POWER7 Date: Fri, 28 Oct 2022 13:39:26 -0300 Message-Id: <20221028163951.810456-38-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::236; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x236.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975481834100005 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst The new method is identical to ppc_next_unmasked_interrupt_generic, processor-specific code will be added/removed in the following patches. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-20-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 108 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 9fa75c55c9..d99b76ce22 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1685,6 +1685,112 @@ void ppc_cpu_do_interrupt(CPUState *cs) } =20 #if defined(TARGET_PPC64) +static int p7_next_unmasked_interrupt(CPUPPCState *env) +{ + bool async_deliver; + + /* External reset */ + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + /* Machine check exception */ + if (env->pending_interrupts & PPC_INTERRUPT_MCK) { + return PPC_INTERRUPT_MCK; + } + + /* + * For interrupts that gate on MSR:EE, we need to do something a + * bit more subtle, as we need to let them through even when EE is + * clear when coming out of some power management states (in order + * for them to become a 0x100). + */ + async_deliver =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sres= et; + + /* Hypervisor decrementer exception */ + if (env->pending_interrupts & PPC_INTERRUPT_HDECR) { + /* LPCR will be clear when not supported so this will work */ + bool hdice =3D !!(env->spr[SPR_LPCR] & LPCR_HDICE); + if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { + /* HDEC clears on delivery */ + return PPC_INTERRUPT_HDECR; + } + } + + /* Hypervisor virtualization interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_HVIRT) { + /* LPCR will be clear when not supported so this will work */ + bool hvice =3D !!(env->spr[SPR_LPCR] & LPCR_HVICE); + if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { + return PPC_INTERRUPT_HVIRT; + } + } + + /* External interrupt can ignore MSR:EE under some circumstances */ + if (env->pending_interrupts & PPC_INTERRUPT_EXT) { + bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); + bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); + /* HEIC blocks delivery to the hypervisor */ + if ((async_deliver && !(heic && FIELD_EX64_HV(env->msr) && + !FIELD_EX64(env->msr, MSR, PR))) || + (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { + return PPC_INTERRUPT_EXT; + } + } + if (FIELD_EX64(env->msr, MSR, CE)) { + /* External critical interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_CEXT) { + return PPC_INTERRUPT_CEXT; + } + } + if (async_deliver !=3D 0) { + /* Watchdog timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_WDT) { + return PPC_INTERRUPT_WDT; + } + if (env->pending_interrupts & PPC_INTERRUPT_CDOORBELL) { + return PPC_INTERRUPT_CDOORBELL; + } + /* Fixed interval timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_FIT) { + return PPC_INTERRUPT_FIT; + } + /* Programmable interval timer on embedded PowerPC */ + if (env->pending_interrupts & PPC_INTERRUPT_PIT) { + return PPC_INTERRUPT_PIT; + } + /* Decrementer exception */ + if (env->pending_interrupts & PPC_INTERRUPT_DECR) { + return PPC_INTERRUPT_DECR; + } + if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { + return PPC_INTERRUPT_DOORBELL; + } + if (env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) { + return PPC_INTERRUPT_HDOORBELL; + } + if (env->pending_interrupts & PPC_INTERRUPT_PERFM) { + return PPC_INTERRUPT_PERFM; + } + /* Thermal interrupt */ + if (env->pending_interrupts & PPC_INTERRUPT_THERM) { + return PPC_INTERRUPT_THERM; + } + /* EBB exception */ + if (env->pending_interrupts & PPC_INTERRUPT_EBB) { + /* + * EBB exception must be taken in problem state and + * with BESCR_GE set. + */ + if (FIELD_EX64(env->msr, MSR, PR) && + (env->spr[SPR_BESCR] & BESCR_GE)) { + return PPC_INTERRUPT_EBB; + } + } + } + + return 0; +} + #define P8_UNUSED_INTERRUPTS \ (PPC_INTERRUPT_RESET | PPC_INTERRUPT_DEBUG | PPC_INTERRUPT_HVIRT | \ PPC_INTERRUPT_CEXT | PPC_INTERRUPT_WDT | PPC_INTERRUPT_CDOORBELL | \ @@ -1972,6 +2078,8 @@ static int ppc_next_unmasked_interrupt(CPUPPCState *e= nv) { switch (env->excp_model) { #if defined(TARGET_PPC64) + case POWERPC_EXCP_POWER7: + return p7_next_unmasked_interrupt(env); case POWERPC_EXCP_POWER8: return p8_next_unmasked_interrupt(env); case POWERPC_EXCP_POWER9: --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975817; cv=none; d=zohomail.com; s=zohoarc; b=hAjBcFVqPkcfWv2Z6XCnmKOlmcGQzmdAUcGoFN+16v1spLev4AtXXOSk1O5M9XEHxQz+twGrrAX58eNXb8u8udk2DN1To14sZu8TO4cF3IbFmnHcBq1PS+VlVtjebYiCrapIu7F37sN8Wh/7XRgHAP32cNC6QqbJnLvgFENf5JU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975817; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XkeXzKRu3IzCRK5CnD2Ad5iL9BjLmwVEpCH96Ljrr6w=; b=caWzwZ4/+LCxY5o+Z9cqxfsvIsWvvOFTVnl7HLmf+HOdv7PKPVDsikLLsgECaTJcuJI7ozCaTtOEYfreXMcRcASam6rxI6+U0rBoSF/x5aOMwPgrjoGWSp0MkT3cLGkYXLzHvP5t3YEQ0DZk0I+3SF/gF5qTgoVfEngYFKKKWYQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975817018714.3459527575975; Fri, 28 Oct 2022 09:50:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSE-0004g0-4E; Fri, 28 Oct 2022 12:43:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRV-0006Pj-Cd; Fri, 28 Oct 2022 12:42:49 -0400 Received: from mail-oa1-x2d.google.com ([2001:4860:4864:20::2d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRT-0000Wk-Eh; Fri, 28 Oct 2022 12:42:49 -0400 Received: by mail-oa1-x2d.google.com with SMTP id 586e51a60fabf-13ae8117023so6863571fac.9; Fri, 28 Oct 2022 09:42:46 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XkeXzKRu3IzCRK5CnD2Ad5iL9BjLmwVEpCH96Ljrr6w=; b=YQtOmZMLxR2iucBJjGcRqJg6HLC/ownXnscx2amaqgdVFeAWGW2x95tVGa99BxjWum 9XrxdiyGOw3lUoIS6H6xU5XekZ/2TcoQuSVCnETqY9PtFOmT8Yokg/EUpNvOQukK13LT FTydtLnGZx1S4aK7JduDFPa49q2hvUT4W6jHdrEyy3WlMYIgJjomdWgm+zD6O4HPgEd3 pqtFmHN+f3hB5VpI2wT6wkp0U262/eVu5ooG539vD5m9FVk4jf9QPiOM//OS9gllDr3/ nSAWekkUIGiNtNbVY4XZIbH7dcNDDAjIhpjJCU8GOQSun5Z6BkNvBzXH30T3/VghLTO1 K4PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XkeXzKRu3IzCRK5CnD2Ad5iL9BjLmwVEpCH96Ljrr6w=; b=8RcTBlat5dFmb/U0V26ECYRjTz1wpC1Z5al4QtqDrtbPs5BaWZN0qyQK5wt++bJBsg +ILZTnuLCyJqQyYro+yhmm8sJeLPn9KrKE6H4SnyOVS/pz2TJBye/uQIHBnnzLU7umBu ChfKrwUpiOrMEB8f9zYN3aRn/kcv2EC9SnOCPbyuwJK5EZbQuN/yJ79cfCrbl+RyLFVz h/ogFkAy22xjPcVY/HQArnrRa2R68lTNzjH3o2SW9lI1A7R7vGaJYW2FDFDokn64r2Mu 9X2NkTTHzPyJuRHtqWA+1eMtRUGkRWpDm6K3lQ7k3VyXVYhdk8DR0r+NUZepxdgsVPxB 87VQ== X-Gm-Message-State: ACrzQf0dKTML59zoDFRIORXsqn75GIkZIDMJPC65D4B34DUghBaKaYOT RwTUbPUfIsYK9FghB8TSfS6gSUaaa1lfJQ== X-Google-Smtp-Source: AMsMyM59HoZHmKxx2tyPn9VTqxb5tTYSJafrlRiCmWzV7cC8ht9kvk888obIDWETBFbOyIt8Bk5UfQ== X-Received: by 2002:a05:6870:f622:b0:130:8d6:cbdb with SMTP id ek34-20020a056870f62200b0013008d6cbdbmr9419222oab.265.1666975365706; Fri, 28 Oct 2022 09:42:45 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 38/62] target/ppc: remove unused interrupts from p7_next_unmasked_interrupt Date: Fri, 28 Oct 2022 13:39:27 -0300 Message-Id: <20221028163951.810456-39-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2d; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975817774100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Remove the following unused interrupts from the POWER7 interrupt masking method: - PPC_INTERRUPT_RESET: only raised for 6xx, 7xx, 970 and POWER5p; - Hypervisor Virtualization: introduced in Power ISA v3.0; - Hypervisor Doorbell and Event-Based Branch: introduced in Power ISA v2.07; - Critical Input, Watchdog Timer, and Fixed Interval Timer: only defined for embedded CPUs; - Doorbell and Critical Doorbell Interrupt: processor does not implement the Embedded.Processor Control category; - Programmable Interval Timer: 40x-only; - PPC_INTERRUPT_THERM: only raised for 970 and POWER5p; Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-21-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 63 +++++----------------------------------- 1 file changed, 8 insertions(+), 55 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index d99b76ce22..08db3a4658 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1685,14 +1685,18 @@ void ppc_cpu_do_interrupt(CPUState *cs) } =20 #if defined(TARGET_PPC64) +#define P7_UNUSED_INTERRUPTS \ + (PPC_INTERRUPT_RESET | PPC_INTERRUPT_HVIRT | PPC_INTERRUPT_CEXT | = \ + PPC_INTERRUPT_WDT | PPC_INTERRUPT_CDOORBELL | PPC_INTERRUPT_FIT | = \ + PPC_INTERRUPT_PIT | PPC_INTERRUPT_DOORBELL | PPC_INTERRUPT_HDOORBELL = | \ + PPC_INTERRUPT_THERM | PPC_INTERRUPT_EBB) + static int p7_next_unmasked_interrupt(CPUPPCState *env) { bool async_deliver; =20 - /* External reset */ - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return PPC_INTERRUPT_RESET; - } + assert((env->pending_interrupts & P7_UNUSED_INTERRUPTS) =3D=3D 0); + /* Machine check exception */ if (env->pending_interrupts & PPC_INTERRUPT_MCK) { return PPC_INTERRUPT_MCK; @@ -1716,15 +1720,6 @@ static int p7_next_unmasked_interrupt(CPUPPCState *e= nv) } } =20 - /* Hypervisor virtualization interrupt */ - if (env->pending_interrupts & PPC_INTERRUPT_HVIRT) { - /* LPCR will be clear when not supported so this will work */ - bool hvice =3D !!(env->spr[SPR_LPCR] & LPCR_HVICE); - if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hvice) { - return PPC_INTERRUPT_HVIRT; - } - } - /* External interrupt can ignore MSR:EE under some circumstances */ if (env->pending_interrupts & PPC_INTERRUPT_EXT) { bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); @@ -1736,56 +1731,14 @@ static int p7_next_unmasked_interrupt(CPUPPCState *= env) return PPC_INTERRUPT_EXT; } } - if (FIELD_EX64(env->msr, MSR, CE)) { - /* External critical interrupt */ - if (env->pending_interrupts & PPC_INTERRUPT_CEXT) { - return PPC_INTERRUPT_CEXT; - } - } if (async_deliver !=3D 0) { - /* Watchdog timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_WDT) { - return PPC_INTERRUPT_WDT; - } - if (env->pending_interrupts & PPC_INTERRUPT_CDOORBELL) { - return PPC_INTERRUPT_CDOORBELL; - } - /* Fixed interval timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_FIT) { - return PPC_INTERRUPT_FIT; - } - /* Programmable interval timer on embedded PowerPC */ - if (env->pending_interrupts & PPC_INTERRUPT_PIT) { - return PPC_INTERRUPT_PIT; - } /* Decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_DECR) { return PPC_INTERRUPT_DECR; } - if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { - return PPC_INTERRUPT_DOORBELL; - } - if (env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) { - return PPC_INTERRUPT_HDOORBELL; - } if (env->pending_interrupts & PPC_INTERRUPT_PERFM) { return PPC_INTERRUPT_PERFM; } - /* Thermal interrupt */ - if (env->pending_interrupts & PPC_INTERRUPT_THERM) { - return PPC_INTERRUPT_THERM; - } - /* EBB exception */ - if (env->pending_interrupts & PPC_INTERRUPT_EBB) { - /* - * EBB exception must be taken in problem state and - * with BESCR_GE set. - */ - if (FIELD_EX64(env->msr, MSR, PR) && - (env->spr[SPR_BESCR] & BESCR_GE)) { - return PPC_INTERRUPT_EBB; - } - } } =20 return 0; --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975698; cv=none; d=zohomail.com; s=zohoarc; b=QlVPrl3WMoMw1Zs+Axba2zlFz8SPlywkhDFcAS+rGmTToz8NM/46cmkDOYbbtMHqAH05Xp8E711aItaIxzuGC1XXzK3RH9N2/mniDePQ4jKQzWJpxrwrt5wgc95J74/U2IrJdpe99NIQU5YenC6lX2ajDLeNIvnTqnMx3KNxGFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975698; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IE8ZDRUsEfLJ4Pv3eq+18gk7CiqMpzJtub7thmc+0lM=; b=XjB+wLVci30+iyKfG5KFsnbBmqwqvDe2Ty1kQnCMcsajOF0MTaHdXfkiNV6bwQRPX1hADx8i5uOyjxbk8fZCGKmlgRfLikZRojInExPnshm2SjJMNjsftUb9FpSzkdHx9gDRZn+1YbLMT6r3nu2mlPjdVTbFQGFeiYhh9fr5d8Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975698032762.364696622271; Fri, 28 Oct 2022 09:48:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSL-0005Nf-8j; Fri, 28 Oct 2022 12:43:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRa-0007Fu-LM; Fri, 28 Oct 2022 12:42:58 -0400 Received: from mail-oa1-x2b.google.com ([2001:4860:4864:20::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRY-0000Y1-RE; Fri, 28 Oct 2022 12:42:54 -0400 Received: by mail-oa1-x2b.google.com with SMTP id 586e51a60fabf-13be3ef361dso6847928fac.12; Fri, 28 Oct 2022 09:42:52 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IE8ZDRUsEfLJ4Pv3eq+18gk7CiqMpzJtub7thmc+0lM=; b=OwOHbq6Q5JEplcwDUzae8AbFawPRKqW0eGtFxrYzVxoNZSemGIbP9NxRYh+LV+BFhx E+OzpM9iF9j9fWSFoHoW6z5QQ8M48IfYDOxTC37FcHDGZoDGIZprJIqULrxRtaYAuOdb PR49cc9xpOfCW0xXBPTf5c01aaAEOUbMvZ2DVFVp7NzEeti9DPT7KyDBak7u051Z//qz lmmLDrPQr3HqCpjVlo63TN6RIOzuIsZr3JOOJUGo7gneVX7ML821r6CFV382zG0Aq72E 9bPqwpfFZl3jgZ+cQY2t5chu5EHEryZdJzocnZyHRUi5POvsUdBHGL/Y9ceTgCKOTtg8 NHMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IE8ZDRUsEfLJ4Pv3eq+18gk7CiqMpzJtub7thmc+0lM=; b=E3xpRtHaclAalwYYlpPJx8BYYajLA/ZkLddtIHFMIQ6elKIgn+TlrVRnhficEPtg1f SzRlm251Pi63p0XTky2ivl8O9YM+H+i/tKPa/7Y1eXCFApxwpqpVtz1DTiqXBSz+lXYh 9ty21fOlCV1PSnN/MuQepoiGfnFo8D5E2ilzxIH7l+TPbU2ROc3JPs9IeFdU85w/KG4G AfLfBuZh14ORw2gN7h0MmBUcTy6Yzy3fmdYsWBE/6w1qGV/We2gIMV1GEsjuMkGpjyJe j2Qtq9wulUgSk0Bo9Q+pD5ZljahbNb4lcnZYT5+2IwukopgEmvMbLW+Erjn2jewfWrRu /bIQ== X-Gm-Message-State: ACrzQf0MVJlmkB1fEKmEwxxJkGFX0g1Ay35dqNs12sAsXl6wilU8H5yC 4OkL+jY1psniHUN/x7MdEgBB07Z5uwC1QA== X-Google-Smtp-Source: AMsMyM6dAsx/8+CYLAZXt+yS0qqqXXa2a8fTumKJQnvpubKY3lIKz09gRrYYDEJnmbMbIhgWvnD23g== X-Received: by 2002:a05:6870:612c:b0:132:a4d3:e0d8 with SMTP id s44-20020a056870612c00b00132a4d3e0d8mr17049oae.95.1666975369785; Fri, 28 Oct 2022 09:42:49 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 39/62] target/ppc: create an interrupt deliver method for POWER7 Date: Fri, 28 Oct 2022 13:39:28 -0300 Message-Id: <20221028163951.810456-40-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2b; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975699149100007 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst The new method is identical to ppc_deliver_interrupt, processor-specific code will be added/removed in the following patches. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-22-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 107 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 08db3a4658..5bb05016fd 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2045,6 +2045,110 @@ static int ppc_next_unmasked_interrupt(CPUPPCState = *env) } =20 #if defined(TARGET_PPC64) +static void p7_deliver_interrupt(CPUPPCState *env, int interrupt) +{ + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + + switch (interrupt) { + case PPC_INTERRUPT_RESET: /* External reset */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; + powerpc_excp(cpu, POWERPC_EXCP_RESET); + break; + case PPC_INTERRUPT_MCK: /* Machine check exception */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; + powerpc_excp(cpu, POWERPC_EXCP_MCHECK); + break; + + case PPC_INTERRUPT_HDECR: /* Hypervisor decrementer exception */ + /* HDEC clears on delivery */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDECR; + powerpc_excp(cpu, POWERPC_EXCP_HDECR); + break; + case PPC_INTERRUPT_HVIRT: /* Hypervisor virtualization interrupt */ + powerpc_excp(cpu, POWERPC_EXCP_HVIRT); + break; + + case PPC_INTERRUPT_EXT: + if (books_vhyp_promotes_external_to_hvirt(cpu)) { + powerpc_excp(cpu, POWERPC_EXCP_HVIRT); + } else { + powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL); + } + break; + case PPC_INTERRUPT_CEXT: /* External critical interrupt */ + powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); + break; + + case PPC_INTERRUPT_WDT: /* Watchdog timer on embedded PowerPC */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; + powerpc_excp(cpu, POWERPC_EXCP_WDT); + break; + case PPC_INTERRUPT_CDOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; + powerpc_excp(cpu, POWERPC_EXCP_DOORCI); + break; + case PPC_INTERRUPT_FIT: /* Fixed interval timer on embedded PowerPC */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; + powerpc_excp(cpu, POWERPC_EXCP_FIT); + break; + case PPC_INTERRUPT_PIT: /* Programmable interval timer on embedded ppc= */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; + powerpc_excp(cpu, POWERPC_EXCP_PIT); + break; + case PPC_INTERRUPT_DECR: /* Decrementer exception */ + if (ppc_decr_clear_on_delivery(env)) { + env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; + } + powerpc_excp(cpu, POWERPC_EXCP_DECR); + break; + case PPC_INTERRUPT_DOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; + if (is_book3s_arch2x(env)) { + powerpc_excp(cpu, POWERPC_EXCP_SDOOR); + } else { + powerpc_excp(cpu, POWERPC_EXCP_DOORI); + } + break; + case PPC_INTERRUPT_HDOORBELL: + env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; + powerpc_excp(cpu, POWERPC_EXCP_SDOOR_HV); + break; + case PPC_INTERRUPT_PERFM: + env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; + powerpc_excp(cpu, POWERPC_EXCP_PERFM); + break; + case PPC_INTERRUPT_THERM: /* Thermal interrupt */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; + powerpc_excp(cpu, POWERPC_EXCP_THERM); + break; + case PPC_INTERRUPT_EBB: /* EBB exception */ + env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; + if (env->spr[SPR_BESCR] & BESCR_PMEO) { + powerpc_excp(cpu, POWERPC_EXCP_PERFM_EBB); + } else if (env->spr[SPR_BESCR] & BESCR_EEO) { + powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL_EBB); + } + break; + case 0: + /* + * This is a bug ! It means that has_work took us out of halt with= out + * anything to deliver while in a PM state that requires getting + * out via a 0x100 + * + * This means we will incorrectly execute past the power management + * instruction instead of triggering a reset. + * + * It generally means a discrepancy between the wakeup conditions = in the + * processor has_work implementation and the logic in this functio= n. + */ + assert(!env->resume_as_sreset); + break; + default: + cpu_abort(cs, "Invalid PowerPC interrupt %d. Aborting\n", interrup= t); + } +} + static void p8_deliver_interrupt(CPUPPCState *env, int interrupt) { PowerPCCPU *cpu =3D env_archcpu(env); @@ -2304,6 +2408,9 @@ static void ppc_deliver_interrupt(CPUPPCState *env, i= nt interrupt) { switch (env->excp_model) { #if defined(TARGET_PPC64) + case POWERPC_EXCP_POWER7: + p7_deliver_interrupt(env, interrupt); + break; case POWERPC_EXCP_POWER8: p8_deliver_interrupt(env, interrupt); break; --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975662; cv=none; d=zohomail.com; s=zohoarc; b=UJypkrKkG7H0IcL0+v8oWHfOeNxXLKiwMVS01yByBf9Ot7BWgkB/V3Kjb82XJPmNriGeknQV94uQGMsOPcM/rB9xbDsmJP/AcspglwRuoQXew7l0A4R5B0NdnJ+4z6bLDssBrhKlstEhY08dMmpLBtB+RFTvIMTR4zR+womREFg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975662; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=513OQwf1KYQzMFUuOswxOfMcfrck8dRAlQfLTWyU38I=; b=HtoTneW+1vZWk41o3L8WhHxAsOQLYqZrTQBBpeK8Eb1xhqwIC03SF5Gj+4fW2hEh3F64M3C8WdZZtRJ8uuqtLt0BYOTCiCnVNOrYibyrxJatsLxl2zOx37YszeoEx96z/8c6+Hk7Vn+Y3yemm1wNiwH1140qQTMKgvIVRUvp0CU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975662113709.7072170852877; Fri, 28 Oct 2022 09:47:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSG-00054j-4F; Fri, 28 Oct 2022 12:43:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRd-0007XD-9Z; Fri, 28 Oct 2022 12:42:58 -0400 Received: from mail-oi1-x22d.google.com ([2607:f8b0:4864:20::22d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRb-0000ZC-NZ; Fri, 28 Oct 2022 12:42:57 -0400 Received: by mail-oi1-x22d.google.com with SMTP id s206so6725988oie.3; Fri, 28 Oct 2022 09:42:55 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=513OQwf1KYQzMFUuOswxOfMcfrck8dRAlQfLTWyU38I=; b=GLBXpXd0fsj9BRhGmF6sslioDX4zX/s8NalvPKZZRGdGy1CFh5d0j9lGXyTzD1o2ih wpgA7ksV5MzNRHCd89//DEJxchSLDUupPlV8R7MXP7BHeq+qWwDscruBrOPDBbIiLz5V q0kbq0ENIltglQOui/LcG1JD6yiW/iocAyqEcXiosVi3kcYxVnOr6Oh6UMQONYpRzXJX 4kme5wnEybtMRSlC1XCVbppljcHwvw+H4CCqCknrUT81teLnpa/L2hE7mrWNGmEIJumY gMWkjd+eytUeqRWCQMVgObgbiSGY6bp5sV+J4aoxzGiqabgVO955j342ok4PAY+JQMrT 2kOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=513OQwf1KYQzMFUuOswxOfMcfrck8dRAlQfLTWyU38I=; b=20xJkt7pnbW9o9P/c/+PSv1e1HpY3/4ZYSCCB/ryJACiSjRSRx5BwB39laVXU4Deg+ Uf5I5IEkKvTAUrBDs41J2R6ll11r32hPDkOu5McFyZEG90ulb4iovO6SuVEzZtfkmg7g mT3Lz0VX1sM8x7SYMZvVyJ024diFOF3166n3DjSPexs5drrYilgPuFtUZ1VY9MSG7qUy PGXPNtFdZGdBYP9Z9Ar4paJRDZ1auh4ZyVg7tUSxANs7uC861yy3Koodll8ffQaHxmdv 2jEDFNshLvQjbOHlYlZs3R5Z71Rx7qNWQ4IKJgnRKLI79ylvKQFL7iAb6OBwNDN/HoMn iqmQ== X-Gm-Message-State: ACrzQf33+SdzoZo4kzcuY8/JvNnoGxFcqGQW/dZXm/pYQzwP6UYDAJ9/ IQ/SSC3AxN5+S88QqhvGQj7YLlCvWfB2YA== X-Google-Smtp-Source: AMsMyM5YDozbW4GV3HdNWaZKwaTsWZKhAYzBkIPi/1aW5S5huyX0TAD8YYVTkMI9cHN5X+ur3ooQlQ== X-Received: by 2002:a05:6808:14c1:b0:354:d3bf:67b with SMTP id f1-20020a05680814c100b00354d3bf067bmr8822750oiw.160.1666975373912; Fri, 28 Oct 2022 09:42:53 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 40/62] target/ppc: remove unused interrupts from p7_deliver_interrupt Date: Fri, 28 Oct 2022 13:39:29 -0300 Message-Id: <20221028163951.810456-41-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22d; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975662804100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Remove the following unused interrupts from the POWER7 interrupt processing method: - PPC_INTERRUPT_RESET: only raised for 6xx, 7xx, 970 and POWER5p; - Hypervisor Virtualization: introduced in Power ISA v3.0; - Hypervisor Doorbell and Event-Based Branch: introduced in Power ISA v2.07; - Critical Input, Watchdog Timer, and Fixed Interval Timer: only defined for embedded CPUs; - Doorbell and Critical Doorbell Interrupt: processor does not implement the Embedded.Processor Control category; - Programmable Interval Timer: 40x-only; - PPC_INTERRUPT_THERM: only raised for 970 and POWER5p; Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-23-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 50 ---------------------------------------- 1 file changed, 50 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 5bb05016fd..5373e088b4 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2051,10 +2051,6 @@ static void p7_deliver_interrupt(CPUPPCState *env, i= nt interrupt) CPUState *cs =3D env_cpu(env); =20 switch (interrupt) { - case PPC_INTERRUPT_RESET: /* External reset */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_RESET; - powerpc_excp(cpu, POWERPC_EXCP_RESET); - break; case PPC_INTERRUPT_MCK: /* Machine check exception */ env->pending_interrupts &=3D ~PPC_INTERRUPT_MCK; powerpc_excp(cpu, POWERPC_EXCP_MCHECK); @@ -2065,9 +2061,6 @@ static void p7_deliver_interrupt(CPUPPCState *env, in= t interrupt) env->pending_interrupts &=3D ~PPC_INTERRUPT_HDECR; powerpc_excp(cpu, POWERPC_EXCP_HDECR); break; - case PPC_INTERRUPT_HVIRT: /* Hypervisor virtualization interrupt */ - powerpc_excp(cpu, POWERPC_EXCP_HVIRT); - break; =20 case PPC_INTERRUPT_EXT: if (books_vhyp_promotes_external_to_hvirt(cpu)) { @@ -2076,60 +2069,17 @@ static void p7_deliver_interrupt(CPUPPCState *env, = int interrupt) powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL); } break; - case PPC_INTERRUPT_CEXT: /* External critical interrupt */ - powerpc_excp(cpu, POWERPC_EXCP_CRITICAL); - break; =20 - case PPC_INTERRUPT_WDT: /* Watchdog timer on embedded PowerPC */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_WDT; - powerpc_excp(cpu, POWERPC_EXCP_WDT); - break; - case PPC_INTERRUPT_CDOORBELL: - env->pending_interrupts &=3D ~PPC_INTERRUPT_CDOORBELL; - powerpc_excp(cpu, POWERPC_EXCP_DOORCI); - break; - case PPC_INTERRUPT_FIT: /* Fixed interval timer on embedded PowerPC */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_FIT; - powerpc_excp(cpu, POWERPC_EXCP_FIT); - break; - case PPC_INTERRUPT_PIT: /* Programmable interval timer on embedded ppc= */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_PIT; - powerpc_excp(cpu, POWERPC_EXCP_PIT); - break; case PPC_INTERRUPT_DECR: /* Decrementer exception */ if (ppc_decr_clear_on_delivery(env)) { env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; } powerpc_excp(cpu, POWERPC_EXCP_DECR); break; - case PPC_INTERRUPT_DOORBELL: - env->pending_interrupts &=3D ~PPC_INTERRUPT_DOORBELL; - if (is_book3s_arch2x(env)) { - powerpc_excp(cpu, POWERPC_EXCP_SDOOR); - } else { - powerpc_excp(cpu, POWERPC_EXCP_DOORI); - } - break; - case PPC_INTERRUPT_HDOORBELL: - env->pending_interrupts &=3D ~PPC_INTERRUPT_HDOORBELL; - powerpc_excp(cpu, POWERPC_EXCP_SDOOR_HV); - break; case PPC_INTERRUPT_PERFM: env->pending_interrupts &=3D ~PPC_INTERRUPT_PERFM; powerpc_excp(cpu, POWERPC_EXCP_PERFM); break; - case PPC_INTERRUPT_THERM: /* Thermal interrupt */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_THERM; - powerpc_excp(cpu, POWERPC_EXCP_THERM); - break; - case PPC_INTERRUPT_EBB: /* EBB exception */ - env->pending_interrupts &=3D ~PPC_INTERRUPT_EBB; - if (env->spr[SPR_BESCR] & BESCR_PMEO) { - powerpc_excp(cpu, POWERPC_EXCP_PERFM_EBB); - } else if (env->spr[SPR_BESCR] & BESCR_EEO) { - powerpc_excp(cpu, POWERPC_EXCP_EXTERNAL_EBB); - } - break; case 0: /* * This is a bug ! It means that has_work took us out of halt with= out --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975521; cv=none; d=zohomail.com; s=zohoarc; b=c2pmU3hj0+eOCgSu5er2EOHU9eOP7PP7JCrNcmTZgKIHtoAitCpsWWPvj8nDh1EIUa+zAbpgya6LI9ni9WsPGlakBD+ctb7F06I0Zk0zwtBu59f8EPUdgxeO3A0zx3cKj81TJIEkbxf254M9lLlNMP9NxC2IVUDXy8LvkY6bfes= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975521; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=qgOUQP7NSW8n0xyZvE3H5JJHoDspNuiKlq12yv+lspA=; b=QH45OAWwLbDVtNwWfoUngJ3KxaPNiRqRiH+7bur5WWVOnDp5VYjWmo9ARG3dGrWOxDgrXcQxRDzQA1Ledvxiow2P6Ik7C7MdGZPDURx5U35Q7cbUu8a7oH+vNHzT/nJ+v16gmatvXBfmFjZKg/RWv2WcbO1kmSP0W8ewGweBP0A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975521505510.15920950780503; Fri, 28 Oct 2022 09:45:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSY-0007S9-Nx; Fri, 28 Oct 2022 12:43:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRh-0007zY-MZ; Fri, 28 Oct 2022 12:43:01 -0400 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRg-0000VD-BE; Fri, 28 Oct 2022 12:43:01 -0400 Received: by mail-oi1-x236.google.com with SMTP id u132so6767098oib.0; Fri, 28 Oct 2022 09:42:58 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:42:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qgOUQP7NSW8n0xyZvE3H5JJHoDspNuiKlq12yv+lspA=; b=DIkvkSosrcSw1STNqa99J7dLR93p+ZCaikDLPqewSADiHHkePGJli+P0FIwnCGlSwB puyR/Le2XD4nkrTDSh+P2Yc578b6TBxO0k6pd5yt5uuh8GgZQvoH7TXeAHgoqVf0lGTo t9wMGePatffCq+TI/snfnSXfTOdVTNSS0foo4FIacLqYGpPIBmsa6SUQrbBkgREDNgTW Io4rsBMdGIWIKaaG4Xb/HqML58REZvwy9AmmuzlE1UhRsb+xAyfWX5Fj5vvirooDgw0Y 7RE6dm2eioHuRUBSSJbv4EXyZPLBR7Y/nF+Bpb7tUJQ1RAXaodIIzNccDPtqwpwBEg6K 4Qiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qgOUQP7NSW8n0xyZvE3H5JJHoDspNuiKlq12yv+lspA=; b=oQYLwoa0h64E89A7ejeWQ0A1zmdLVDkbXzqw4r4xxQ648xADDfk5xFY+9UzEeeYZxs YuIe4LqVv0aEwIqkeyCesRh5XigHMyeFMQb3rmVG31ZrdzHkv8WpMLsP5DDrPoIEGbQS s66nRDPVWgzIjxSFap4zh9qaKOXulQnWr5uwGPBXixHMQ4sRgLBAy7lkQ47JptUCkZh6 O0++SbbT/CU2xbULzi1VyldUOdTbAIzO8e6rV59jp1WRBA/xNawyA+uxlQtPXI6Yi8nH 0d9/f/8s+ZRTYhfrKYMgaPG4k7jE+Gy0SOb9ML+73B1r/p7Knr6y+tyPFlYCVR2Sp4dY g0hw== X-Gm-Message-State: ACrzQf196iLMrkTxITuZd0f1cy11w3wYiIJXDGJSweU0lgyH5BXHl7xe rUgXGN9gaZ+LgwYHJd+9QH7REkjlY7FlCA== X-Google-Smtp-Source: AMsMyM4hOutYsuJQcCy444qOs6SQqTYi5j1J2+hXHvryK/pKanEi1BYMPrWe2HmVTjbEZrWjmy6WYQ== X-Received: by 2002:a05:6808:2116:b0:359:dc32:4f6e with SMTP id r22-20020a056808211600b00359dc324f6emr1057437oiw.86.1666975377931; Fri, 28 Oct 2022 09:42:57 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 41/62] target/ppc: remove generic architecture checks from p7_deliver_interrupt Date: Fri, 28 Oct 2022 13:39:30 -0300 Message-Id: <20221028163951.810456-42-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::236; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x236.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975522023100007 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-24-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/excp_helper.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 5373e088b4..9164dc2e0f 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2071,9 +2071,6 @@ static void p7_deliver_interrupt(CPUPPCState *env, in= t interrupt) break; =20 case PPC_INTERRUPT_DECR: /* Decrementer exception */ - if (ppc_decr_clear_on_delivery(env)) { - env->pending_interrupts &=3D ~PPC_INTERRUPT_DECR; - } powerpc_excp(cpu, POWERPC_EXCP_DECR); break; case PPC_INTERRUPT_PERFM: --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666976004; cv=none; d=zohomail.com; s=zohoarc; b=B0FTo/v7Ddz7F8RMeXvrv4sxYcKR41Fa/a0p91WS812+3sTy5npH75ODu59U9gqcIiUhx4khB8VF2FUQB1ehFpO+mrr0VRmZoX3wwEsihgVxRkETntC58YvkJcq96IrsWetkU4hfS/Z4yGPHjiq5jXEDGokSapg1OTaZcVFPt8Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666976004; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XzX0Zy2ZQKvZsgRH0Jkkp6FmIW/wCuAVl3Iv0Xh6wRI=; b=atoJHb162bPvhWag4/W8T136Mi5Za7kZ47+wESoWE7Cju8MpGqEAhWzEknikSNr0LAoTMaY7tStRbopwV8o+ky04vwBloJvNA0IQ8A9XSxVXbS0IpQVb4Yh9J4DzlpzlyPbXNUauEVjFePWjYN99Mle81dFC30JWHnFIrJmOPAY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666976004039605.9714331308716; Fri, 28 Oct 2022 09:53:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSb-0007yX-5c; Fri, 28 Oct 2022 12:43:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRl-0008LP-8m; Fri, 28 Oct 2022 12:43:06 -0400 Received: from mail-oi1-x234.google.com ([2607:f8b0:4864:20::234]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRj-0000bA-Nd; Fri, 28 Oct 2022 12:43:05 -0400 Received: by mail-oi1-x234.google.com with SMTP id y67so6723703oiy.1; Fri, 28 Oct 2022 09:43:02 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.42.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XzX0Zy2ZQKvZsgRH0Jkkp6FmIW/wCuAVl3Iv0Xh6wRI=; b=G0DRqnR3tJ8AvD6Z0YE46Ea9zhooidebl3kLZzuTb0ku3AKnqnjG3dZ8qOA/me8p0U Ej1oF2WidxuhlhF8Z5FH37YvIcuYTUPXapKklajm7ZEmDWlClhcPMmGg40aQGBj3D/5y RzVT0PlHgdgs6KyX0d8HM1IcpJinSfoDRiM5Wc7f44BhoBKQMeRcbfGNKAF0OhOskRu5 5T4Ktr3hunEUmGHMsMaxO/vCjRTZHLl0v3moetQ5t+VnSwtp3exXa0neZ/ORq7ZjrKUs o5WxTeCgbTDteQTE9i/KOyvN1SBYIgvCFqX/cJoWmHo+HE3cpvYLbJwZUtW4M69lDdJ/ CyLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XzX0Zy2ZQKvZsgRH0Jkkp6FmIW/wCuAVl3Iv0Xh6wRI=; b=NS+Wim7fARWpmwDOa8AjdfOpI8GRweq16fG76vQKPUqjATqO9HXW1RD86EvNQm+oU+ ccMJwtGtQariupSnUqIzo5rcrel2qRdIVTHqvPFo/5PdLFNykLVwR9ePElnwK8u4+atF xhzLhuzqD4IF6nT+tuWd1a5sAFrtP2JPp432nKuD9wxidk7CblvgCmArcR6feHLydEB2 IjCEZ1QDvlz6N0+Li2sgN0oJn2mMznDjEKHBFfcgru00gwO2yz1+AmTcb8px5ha1HH0G XpbZ3kHh34UP7UhlKKCN3UeqO1uDkDb37qDcUS2Rb/uBFDN/pZllu2JZ5dZ/+TgizefM SdLA== X-Gm-Message-State: ACrzQf3UVvOHCRFof4zShrZZ3ETPFN+7O9a7cFSyPhikAU5evoXICRRJ CIZUR9UHzIpIytAMtsR9SAI0iEwFvWkrDg== X-Google-Smtp-Source: AMsMyM4UIl7SYvVP/AzFRkBqfwPUy+eQVAwynnXjfg61cCHiygN86OEX1Gr3SUStJCHNHmR05105Gg== X-Received: by 2002:aca:f0c2:0:b0:34f:df0b:2de9 with SMTP id o185-20020acaf0c2000000b0034fdf0b2de9mr8691943oih.245.1666975381930; Fri, 28 Oct 2022 09:43:01 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 42/62] target/ppc: move power-saving interrupt masking out of cpu_has_work_POWER7 Date: Fri, 28 Oct 2022 13:39:31 -0300 Message-Id: <20221028163951.810456-43-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::234; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x234.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666976005597100001 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Move the interrupt masking logic out of cpu_has_work_POWER7 in a new method, p7_interrupt_powersave, that only returns an interrupt if it can wake the processor from power-saving mode. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-25-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu_init.c | 45 ++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 68ae22d1f4..0c5ada7826 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -5960,6 +5960,30 @@ static bool ppc_pvr_match_power7(PowerPCCPUClass *pc= c, uint32_t pvr, bool best) return true; } =20 +static int p7_interrupt_powersave(CPUPPCState *env) +{ + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && + (env->spr[SPR_LPCR] & LPCR_P7_PECE0)) { + return PPC_INTERRUPT_EXT; + } + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && + (env->spr[SPR_LPCR] & LPCR_P7_PECE1)) { + return PPC_INTERRUPT_DECR; + } + if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && + (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { + return PPC_INTERRUPT_MCK; + } + if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && + (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { + return PPC_INTERRUPT_HMI; + } + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + return 0; +} + static bool cpu_has_work_POWER7(CPUState *cs) { PowerPCCPU *cpu =3D POWERPC_CPU(cs); @@ -5969,26 +5993,7 @@ static bool cpu_has_work_POWER7(CPUState *cs) if (!(cs->interrupt_request & CPU_INTERRUPT_HARD)) { return false; } - if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && - (env->spr[SPR_LPCR] & LPCR_P7_PECE0)) { - return true; - } - if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && - (env->spr[SPR_LPCR] & LPCR_P7_PECE1)) { - return true; - } - if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && - (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { - return true; - } - if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && - (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { - return true; - } - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return true; - } - return false; + return p7_interrupt_powersave(env) !=3D 0; } else { return FIELD_EX64(env->msr, MSR, EE) && (cs->interrupt_request & CPU_INTERRUPT_HARD); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975681; cv=none; d=zohomail.com; s=zohoarc; b=bx/UJp2WDAUBq2L9tfdUcoQr+SgiiKAcR/ZCgMZoIAP/nTBGZmJE4SsrifBSipd7rBqkpWtokVuZS1lMOJ1EPezUy9qNzX7TbtBBrzeZut9qFwtAoZAcA0vMaVx9T2MuliTICRhjspl5xZZhPJLTNI78CrOioq+k5e0kRom1y0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975681; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=RYgVxYkkxGAqeFzTYsLiBahRC2yjDI9EnIVkK5tQL0Q=; b=lm1oGm1HtG2m1pi7smbbtsaQ/RYf8TOVL6XM+4khw1tNIvckRU/D1l9BMsSWoXNvnzg0nYKaiDtkOcQ+6p5QvxptbRukrBxEKmePMaubIOcrIqaH9LbD75vIN4k11YWPaEV/XFfv3A+9NZe//JszHkL7jdOaI5IQYK9tejGqtrs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975681712421.3439577967506; Fri, 28 Oct 2022 09:48:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSd-0008U0-Ix; Fri, 28 Oct 2022 12:43:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRq-0000XT-6l; Fri, 28 Oct 2022 12:43:10 -0400 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRo-0000QM-I4; Fri, 28 Oct 2022 12:43:09 -0400 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-1322d768ba7so6895317fac.5; Fri, 28 Oct 2022 09:43:07 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RYgVxYkkxGAqeFzTYsLiBahRC2yjDI9EnIVkK5tQL0Q=; b=Cjbs9wM0Fx8dTdwREDxREN1DyMoiMURQPvvXm3nhkVJHMIgRt7iKc9Pqm98FYVXlQG Ugws8oWZ92mVcteKZZs6mlMBVaL2j4g9H3tOEu4d5tu1gc+4W34Jd/jLV1zI4EEjns5v gyUkubgATg8jUzCqy/ZUoqz0IqNa8Aw2eryBc/zSHTvp+u6TjaXbqUebCh9dOfDF479E WOj0aT0MvFkxOaWzFf9Ilg5IPrD7RurLJxptJC1sxNNswoAnujdyR9d9YBUYzaQsdRyY jiFGxiWwsnnPqDxF08ogAz8sOnaeNdxtrMBZilEkivgpNdZaobN39tg/sAFtX7Pz0Zhj 7sOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RYgVxYkkxGAqeFzTYsLiBahRC2yjDI9EnIVkK5tQL0Q=; b=O12DLqoVWrYQWyNFxRiGaSIvj0IONh26vlbJNgq1p7Z1UL0Yra9k41F5PccBKmqRCt 6tNk45273LskypDRuAG7iI91Fe8S8nfaGhKYKVhNfZ9jn3xfTGQFo6iDorS4W8Su206P qshjYFvwftWGXBQALUImWikvKV+j6dDufZPi7klWl651UzCn3KEgSLuCRk0ydQ6p3JWW 7MTelNJTyYpFcprX5A8I9DjKSHqR6sCQv9ddv/FHsoA7iUnBXOn/3Y4jPg1DuOjhJ/GP dDZcHffFESD6AJqo3lG/LSCPbNXxGX7G7+6rpniWRDkCyq9FMrT4ZoHe2r7beUqbF09l Lfcg== X-Gm-Message-State: ACrzQf1bCNn93A2iujJb/D+6YNDw76DH3j9NC4i3MORkJ0/JpgxjjKgr yHUpjfaxdr52P4qqCY08+BvSgqkbK5jCnw== X-Google-Smtp-Source: AMsMyM76XLE1UyD7TC2bCt8ARQiRheg9ui8wMJtckoe5ecgqWcdjj9uic5g30blYJZTbPIStz9cfug== X-Received: by 2002:a05:6870:fb86:b0:13a:dffa:e4ae with SMTP id kv6-20020a056870fb8600b0013adffae4aemr9853668oab.245.1666975387114; Fri, 28 Oct 2022 09:43:07 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 43/62] target/ppc: add power-saving interrupt masking logic to p7_next_unmasked_interrupt Date: Fri, 28 Oct 2022 13:39:32 -0300 Message-Id: <20221028163951.810456-44-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::31; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x31.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975682998100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Export p7_interrupt_powersave and use it in p7_next_unmasked_interrupt. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-26-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu_init.c | 2 +- target/ppc/excp_helper.c | 24 ++++++++++++------------ target/ppc/internal.h | 1 + 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 0c5ada7826..5238229cd6 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -5960,7 +5960,7 @@ static bool ppc_pvr_match_power7(PowerPCCPUClass *pcc= , uint32_t pvr, bool best) return true; } =20 -static int p7_interrupt_powersave(CPUPPCState *env) +int p7_interrupt_powersave(CPUPPCState *env) { if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && (env->spr[SPR_LPCR] & LPCR_P7_PECE0)) { diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 9164dc2e0f..14bec2490f 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1693,28 +1693,28 @@ void ppc_cpu_do_interrupt(CPUState *cs) =20 static int p7_next_unmasked_interrupt(CPUPPCState *env) { - bool async_deliver; + PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D CPU(cpu); + /* Ignore MSR[EE] when coming out of some power management states */ + bool msr_ee =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sreset; =20 assert((env->pending_interrupts & P7_UNUSED_INTERRUPTS) =3D=3D 0); =20 + if (cs->halted) { + /* LPCR[PECE] controls which interrupts can exit power-saving mode= */ + return p7_interrupt_powersave(env); + } + /* Machine check exception */ if (env->pending_interrupts & PPC_INTERRUPT_MCK) { return PPC_INTERRUPT_MCK; } =20 - /* - * For interrupts that gate on MSR:EE, we need to do something a - * bit more subtle, as we need to let them through even when EE is - * clear when coming out of some power management states (in order - * for them to become a 0x100). - */ - async_deliver =3D FIELD_EX64(env->msr, MSR, EE) || env->resume_as_sres= et; - /* Hypervisor decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_HDECR) { /* LPCR will be clear when not supported so this will work */ bool hdice =3D !!(env->spr[SPR_LPCR] & LPCR_HDICE); - if ((async_deliver || !FIELD_EX64_HV(env->msr)) && hdice) { + if ((msr_ee || !FIELD_EX64_HV(env->msr)) && hdice) { /* HDEC clears on delivery */ return PPC_INTERRUPT_HDECR; } @@ -1725,13 +1725,13 @@ static int p7_next_unmasked_interrupt(CPUPPCState *= env) bool lpes0 =3D !!(env->spr[SPR_LPCR] & LPCR_LPES0); bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); /* HEIC blocks delivery to the hypervisor */ - if ((async_deliver && !(heic && FIELD_EX64_HV(env->msr) && + if ((msr_ee && !(heic && FIELD_EX64_HV(env->msr) && !FIELD_EX64(env->msr, MSR, PR))) || (env->has_hv_mode && !FIELD_EX64_HV(env->msr) && !lpes0)) { return PPC_INTERRUPT_EXT; } } - if (async_deliver !=3D 0) { + if (msr_ee !=3D 0) { /* Decrementer exception */ if (env->pending_interrupts & PPC_INTERRUPT_DECR) { return PPC_INTERRUPT_DECR; diff --git a/target/ppc/internal.h b/target/ppc/internal.h index 9069874adb..25827ebf6f 100644 --- a/target/ppc/internal.h +++ b/target/ppc/internal.h @@ -309,6 +309,7 @@ static inline int ger_pack_masks(int pmsk, int ymsk, in= t xmsk) #if defined(TARGET_PPC64) int p9_interrupt_powersave(CPUPPCState *env); int p8_interrupt_powersave(CPUPPCState *env); +int p7_interrupt_powersave(CPUPPCState *env); #endif =20 #endif /* PPC_INTERNAL_H */ --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975774; cv=none; d=zohomail.com; s=zohoarc; b=HqRLuVKuBpHeRE371+4l1cauThGeWbCsXsnvOTqhKjwj+hw0yM2H087ueFw/jf3yumHcAvo6FxYn0usoAyEeuSCSM32t85OumVi1/aWSkHXsD9oMKi1EzlazH/oMPFCrcuPCv4VswSwdwcWWbfF+TsJYAwPoR+ReoRLqyWadVFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975774; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=xyhQI0Lbzpmp5S+5BT24WfTg1fucLHlEvq9Q5Qt6284=; b=SgjXsBV9EEqTIalu8mCJ9X/ztI1+psN/AUonZROngpWwXiZzg8GkBCqX+Zs+/gd6Wq7uHB9XSRiEi0wWHnlNP0PoqBZSz1vVS6o+G4MzJTwUr2msEJZfz9TTGQGgmdbMkWadQn2lVQ6zJAmAPaVnsw/gX+KO312Ork7kzrc4I4I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975774276223.38957776165068; Fri, 28 Oct 2022 09:49:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSe-0000KM-RK; Fri, 28 Oct 2022 12:44:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSRv-0001NX-Nt; Fri, 28 Oct 2022 12:43:16 -0400 Received: from mail-oi1-x234.google.com ([2607:f8b0:4864:20::234]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRu-0000ea-8t; Fri, 28 Oct 2022 12:43:15 -0400 Received: by mail-oi1-x234.google.com with SMTP id g10so6685257oif.10; Fri, 28 Oct 2022 09:43:13 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xyhQI0Lbzpmp5S+5BT24WfTg1fucLHlEvq9Q5Qt6284=; b=WHJ1v2yMROSdj9pdZNaS2/xjQxuZSeddPhIiH1TgoG4RXimFrxw3ediSPHqOGAqCq5 1X2kTyPaEpQR6C8IFKoIg4D+eUOLvFaIKyK/YqzF2ej3ME8Hg0NHrAw+o1nIsAlWmkzu MKbqCiIztWeSvntsXzgyiDYyjVWarlGhXK6kEw63WVOLniR4jtgML3RQzCpu6QNwXFSU D9/Hdbw0lIXGukguqWgYYowGJMZE0bfiKiWqteMpbXSExVnSaEWZSHmS0MUzUYFgAuhh L5NKG24LMCWHzEjJlswIkhAMtYXW5CHFtIET0Fch154jnvIcg+z48rPqn29Rk8xpfbzN kSfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xyhQI0Lbzpmp5S+5BT24WfTg1fucLHlEvq9Q5Qt6284=; b=Yqek/shn7bU7Io0C3NK6Zjs/tboKoE90E9buv0o6EEJ4vgV0xTDBWyHdottIWI92tB 9wzR22YZO9EFFKMiBZtS3ekScfqTdGWQm4SnflmXKQvhrd6r3wBGCa7Y3PC0VvX/uYeZ wVzme9pENCYPoFtOqWkS8lotTNMcp9KO3td/Na1F1BOOFPYB/8Wgy2TxUUIQlpCNF7de /dCfY1v5vXu4Itolgb1yG1merWvT3Ni89/xEiP/z3iLz659Cdyu8ncausVNa8ZeAqCHs R6zW0gFIo9F6dyk0GPx0GxrMk4cvgomhRyyv7yXZjCWR9j0AhFkbsSGJD2RQFkZC44pN F3iQ== X-Gm-Message-State: ACrzQf0RWJYciYhl4ovCyVfE+oeb68tSKDn0y/a2yiCOU/YQVJ9vDYXw J5MfSlBs3vR6TH7nIYQdg38RKx0nHhKj1w== X-Google-Smtp-Source: AMsMyM5/PpKvFwLxVQzSJke6RLjAqznHXqakTmeaOp+tclD9yY3yg/jNO0jrFGSeqfp1rxHxaP8Wig== X-Received: by 2002:a05:6808:2393:b0:355:39af:eb6e with SMTP id bp19-20020a056808239300b0035539afeb6emr8697561oib.40.1666975392347; Fri, 28 Oct 2022 09:43:12 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 44/62] target/ppc: remove ppc_store_lpcr from CONFIG_USER_ONLY builds Date: Fri, 28 Oct 2022 13:39:33 -0300 Message-Id: <20221028163951.810456-45-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::234; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x234.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975775603100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Writes to LPCR are hypervisor privileged. Signed-off-by: Matheus Ferst Reviewed-by: Fabiano Rosas Message-Id: <20221011204829.1641124-27-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu.c | 2 ++ target/ppc/cpu.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index 0ebac04bc4..e95b4c5ee1 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -73,6 +73,7 @@ void ppc_store_msr(CPUPPCState *env, target_ulong value) hreg_store_msr(env, value, 0); } =20 +#if !defined(CONFIG_USER_ONLY) void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val) { PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); @@ -82,6 +83,7 @@ void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val) /* The gtse bit affects hflags */ hreg_compute_hflags(env); } +#endif =20 static inline void fpscr_set_rounding_mode(CPUPPCState *env) { diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 2433756973..ad758b00e5 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1370,9 +1370,9 @@ void ppc_translate_init(void); =20 #if !defined(CONFIG_USER_ONLY) void ppc_store_sdr1(CPUPPCState *env, target_ulong value); +void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val); #endif /* !defined(CONFIG_USER_ONLY) */ void ppc_store_msr(CPUPPCState *env, target_ulong value); -void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val); =20 void ppc_cpu_list(void); =20 --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975719; cv=none; d=zohomail.com; s=zohoarc; b=h1Oi1Pm/z7DmHXMuvmZTMNKM2fgvSTfFwpD7EVAvfdr9Fr8tx4pG/ZTgflsUNbpmCvGlrtF9tn07bBSVOtRJ74FjQH+re0jtEaJngUpAnyarkTaU0IkYYPuidHzmzTHH8LO/KStjkLY6eWyUFHBezjDzk3EMa2iqBOZV/qJ4d8I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975719; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OKLpqCzd3VhR2aV5CxTpiVjzpqLZ0hJfQFZt1uxcxCk=; b=OSAibo7Y3SYXBqURcTuBBZMXsG1K9XCffGKWSbOEbmdI5lRWLGyMeAXSYOPxoHCSZgEY8sPvNfgsQVH+AaLu9B7496+XQ5EqwB0b4oYmkiUPzzkxB+cRKhlLNX3qhgXIHlu9QC2CXmwfPaEuWphDcftl1V5QN2jnGmm+9rI2b3Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166697571911023.4670954211482; Fri, 28 Oct 2022 09:48:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSh-0000pG-8b; Fri, 28 Oct 2022 12:44:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSS2-0002YM-7v; Fri, 28 Oct 2022 12:43:22 -0400 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSRz-0000gc-IY; Fri, 28 Oct 2022 12:43:21 -0400 Received: by mail-oi1-x22e.google.com with SMTP id l5so6703082oif.7; Fri, 28 Oct 2022 09:43:18 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OKLpqCzd3VhR2aV5CxTpiVjzpqLZ0hJfQFZt1uxcxCk=; b=Y/xWNIhQ4sS+hjEa2S7Q5g+UKcJbnHyjPKu8FvgGR2rfjT/+cvbX7OPX5Xd0a+BJt2 HTtDOz6XWjaplrwyWn/gw55YTPrLWgnIYy2BehigStbNvb/Kqa3d4cGEdeGBD1iw68N2 VBgMUbVfytrZ89dRlNRNdV2D8DjJkE6LeMLXyCAKM6cyqNT8lC570INHGVEZuWy4nedl jYTsjfKQ0wVNtiAzbfN4H+bIblNPOOhRctBtTV2R7u+iVJ6JY6BrEP/z4qx+a0Q1GMpM TGACKoMxGj/mHTqYYlpNRVJjOJzgJaj1VtDvO9fy7JC0vnltYiD52Iw2OTPVQCB8wITx CZVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OKLpqCzd3VhR2aV5CxTpiVjzpqLZ0hJfQFZt1uxcxCk=; b=1eAKltuFYn0sHJxS9P0bC+FGGMYZH8K+lW/yGJq5Z+7vJTKEj9qbVzwEeipqgaqYSU PwOtP//g4zrfoecfVOKQGz3U3Nz01mCDpSdNXsFrfrlaCLUqUzJQsZI+cF0kfNTukZU9 k9ndI5cEcwmNtUAYVYr+J9L7xDhdeLT9VMzNZMjyY/ojPdz7Zn3JAU5L+93RWlEn6bBa V7VFxXOQGWNBgvLP5qAYF6GMJ6PwWIuKcRYn3LsPkkB+WsyWaColRKNVALSpmKg/H8hC oHeVJh0sg01teJ4DIX+7D7uEd193fhRdeBpllwJ9MzCbotYCJIQPGWQuLfWVciX+Zjsy Rl4Q== X-Gm-Message-State: ACrzQf3ZeJxzl4bbHE0x41ztfuGpDrGNLEOrGz1opcIa2Vm4LjT2YGgq cW9V6TCtzgiN/gEO2ci1WP/a7ZiUXADlZA== X-Google-Smtp-Source: AMsMyM7Oh5PiKMQWEKdWFCcPZlgGPvPauqKJcXHluNozspgw+F+1shJXvcfS1z82GgEl/7oL/DiHXg== X-Received: by 2002:a05:6808:911:b0:359:cb34:8dd4 with SMTP id w17-20020a056808091100b00359cb348dd4mr167150oih.223.1666975397708; Fri, 28 Oct 2022 09:43:17 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Daniel Henrique Barboza Subject: [PULL 45/62] target/ppc: introduce ppc_maybe_interrupt Date: Fri, 28 Oct 2022 13:39:34 -0300 Message-Id: <20221028163951.810456-46-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22e; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975721298100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst This new method will check if any pending interrupt was unmasked and then call cpu_interrupt/cpu_reset_interrupt accordingly. Code that raises/lowers or masks/unmasks interrupts should call this method to keep CPU_INTERRUPT_HARD coherent with env->pending_interrupts. Signed-off-by: Matheus Ferst Reviewed-by: Daniel Henrique Barboza Message-Id: <20221021142156.4134411-2-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- hw/ppc/pnv_core.c | 1 + hw/ppc/ppc.c | 7 +------ hw/ppc/spapr_hcall.c | 6 ++++++ hw/ppc/spapr_rtas.c | 2 +- target/ppc/cpu.c | 2 ++ target/ppc/cpu.h | 1 + target/ppc/excp_helper.c | 42 ++++++++++++++++++++++++++++++++++++++++ target/ppc/helper.h | 1 + target/ppc/helper_regs.c | 2 ++ target/ppc/translate.c | 11 ++++++++++- 10 files changed, 67 insertions(+), 8 deletions(-) diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index 19e8eb885f..9ee79192dd 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -58,6 +58,7 @@ static void pnv_core_cpu_reset(PnvCore *pc, PowerPCCPU *c= pu) env->msr |=3D MSR_HVB; /* Hypervisor mode */ env->spr[SPR_HRMOR] =3D pc->hrmor; hreg_compute_hflags(env); + ppc_maybe_interrupt(env); =20 pcc->intc_reset(pc->chip, cpu); } diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index 77e611e81c..dc86c1c7db 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -42,7 +42,6 @@ static void cpu_ppc_tb_start (CPUPPCState *env); =20 void ppc_set_irq(PowerPCCPU *cpu, int irq, int level) { - CPUState *cs =3D CPU(cpu); CPUPPCState *env =3D &cpu->env; unsigned int old_pending; bool locked =3D false; @@ -57,19 +56,15 @@ void ppc_set_irq(PowerPCCPU *cpu, int irq, int level) =20 if (level) { env->pending_interrupts |=3D irq; - cpu_interrupt(cs, CPU_INTERRUPT_HARD); } else { env->pending_interrupts &=3D ~irq; - if (env->pending_interrupts =3D=3D 0) { - cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); - } } =20 if (old_pending !=3D env->pending_interrupts) { + ppc_maybe_interrupt(env); kvmppc_set_interrupt(cpu, irq, level); } =20 - trace_ppc_irq_set_exit(env, irq, level, env->pending_interrupts, CPU(cpu)->interrupt_request); =20 diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 891206e893..925ff523cc 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -490,6 +490,7 @@ static target_ulong h_cede(PowerPCCPU *cpu, SpaprMachin= eState *spapr, =20 env->msr |=3D (1ULL << MSR_EE); hreg_compute_hflags(env); + ppc_maybe_interrupt(env); =20 if (spapr_cpu->prod) { spapr_cpu->prod =3D false; @@ -500,6 +501,7 @@ static target_ulong h_cede(PowerPCCPU *cpu, SpaprMachin= eState *spapr, cs->halted =3D 1; cs->exception_index =3D EXCP_HLT; cs->exit_request =3D 1; + ppc_maybe_interrupt(env); } =20 return H_SUCCESS; @@ -521,6 +523,7 @@ static target_ulong h_confer_self(PowerPCCPU *cpu) cs->halted =3D 1; cs->exception_index =3D EXCP_HALTED; cs->exit_request =3D 1; + ppc_maybe_interrupt(&cpu->env); =20 return H_SUCCESS; } @@ -633,6 +636,7 @@ static target_ulong h_prod(PowerPCCPU *cpu, SpaprMachin= eState *spapr, spapr_cpu =3D spapr_cpu_state(tcpu); spapr_cpu->prod =3D true; cs->halted =3D 0; + ppc_maybe_interrupt(&cpu->env); qemu_cpu_kick(cs); =20 return H_SUCCESS; @@ -1669,6 +1673,7 @@ static target_ulong h_enter_nested(PowerPCCPU *cpu, spapr_cpu->in_nested =3D true; =20 hreg_compute_hflags(env); + ppc_maybe_interrupt(env); tlb_flush(cs); env->reserve_addr =3D -1; /* Reset the reservation */ =20 @@ -1810,6 +1815,7 @@ out_restore_l1: spapr_cpu->in_nested =3D false; =20 hreg_compute_hflags(env); + ppc_maybe_interrupt(env); tlb_flush(cs); env->reserve_addr =3D -1; /* Reset the reservation */ =20 diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c index d58b65e88f..3f664ea02c 100644 --- a/hw/ppc/spapr_rtas.c +++ b/hw/ppc/spapr_rtas.c @@ -214,9 +214,9 @@ static void rtas_stop_self(PowerPCCPU *cpu, SpaprMachin= eState *spapr, * guest. * For the same reason, set PSSCR_EC. */ - ppc_store_lpcr(cpu, env->spr[SPR_LPCR] & ~pcc->lpcr_pm); env->spr[SPR_PSSCR] |=3D PSSCR_EC; cs->halted =3D 1; + ppc_store_lpcr(cpu, env->spr[SPR_LPCR] & ~pcc->lpcr_pm); kvmppc_set_reg_ppc_online(cpu, 0); qemu_cpu_kick(cs); } diff --git a/target/ppc/cpu.c b/target/ppc/cpu.c index e95b4c5ee1..1a97b41c6b 100644 --- a/target/ppc/cpu.c +++ b/target/ppc/cpu.c @@ -82,6 +82,8 @@ void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val) env->spr[SPR_LPCR] =3D val & pcc->lpcr_mask; /* The gtse bit affects hflags */ hreg_compute_hflags(env); + + ppc_maybe_interrupt(env); } #endif =20 diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index ad758b00e5..cc2d0305ff 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1358,6 +1358,7 @@ int ppc64_cpu_write_elf64_note(WriteCoreDumpFunction = f, CPUState *cs, int ppc32_cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cs, int cpuid, DumpState *s); #ifndef CONFIG_USER_ONLY +void ppc_maybe_interrupt(CPUPPCState *env); void ppc_cpu_do_interrupt(CPUState *cpu); bool ppc_cpu_exec_interrupt(CPUState *cpu, int int_req); void ppc_cpu_do_system_reset(CPUState *cs); diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 14bec2490f..07480079f7 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -390,6 +390,7 @@ static void powerpc_set_excp_state(PowerPCCPU *cpu, tar= get_ulong vector, env->nip =3D vector; env->msr =3D msr; hreg_compute_hflags(env); + ppc_maybe_interrupt(env); =20 powerpc_reset_excp_state(cpu); =20 @@ -2044,6 +2045,40 @@ static int ppc_next_unmasked_interrupt(CPUPPCState *= env) } } =20 +/* + * Sets CPU_INTERRUPT_HARD if there is at least one unmasked interrupt to = be + * delivered and clears CPU_INTERRUPT_HARD otherwise. + * + * This method is called by ppc_set_interrupt when an interrupt is raised = or + * lowered, and should also be called whenever an interrupt masking condit= ion + * is changed, e.g.: + * - When relevant bits of MSR are altered, like EE, HV, PR, etc.; + * - When relevant bits of LPCR are altered, like PECE, HDICE, HVICE, etc= .; + * - When PSSCR[EC] or env->resume_as_sreset are changed; + * - When cs->halted is changed and the CPU has a different interrupt mas= king + * logic in power-saving mode (e.g., POWER7/8/9/10); + */ +void ppc_maybe_interrupt(CPUPPCState *env) +{ + CPUState *cs =3D env_cpu(env); + bool locked =3D false; + + if (!qemu_mutex_iothread_locked()) { + locked =3D true; + qemu_mutex_lock_iothread(); + } + + if (ppc_next_unmasked_interrupt(env)) { + cpu_interrupt(cs, CPU_INTERRUPT_HARD); + } else { + cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD); + } + + if (locked) { + qemu_mutex_unlock_iothread(); + } +} + #if defined(TARGET_PPC64) static void p7_deliver_interrupt(CPUPPCState *env, int interrupt) { @@ -2479,6 +2514,11 @@ void helper_store_msr(CPUPPCState *env, target_ulong= val) } } =20 +void helper_ppc_maybe_interrupt(CPUPPCState *env) +{ + ppc_maybe_interrupt(env); +} + #if defined(TARGET_PPC64) void helper_scv(CPUPPCState *env, uint32_t lev) { @@ -2499,6 +2539,8 @@ void helper_pminsn(CPUPPCState *env, powerpc_pm_insn_= t insn) /* Condition for waking up at 0x100 */ env->resume_as_sreset =3D (insn !=3D PPC_PM_STOP) || (env->spr[SPR_PSSCR] & PSSCR_EC); + + ppc_maybe_interrupt(env); } #endif /* defined(TARGET_PPC64) */ =20 diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 8344fe39c6..25533b8f33 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -10,6 +10,7 @@ DEF_HELPER_4(HASHSTP, void, env, tl, tl, tl) DEF_HELPER_4(HASHCHKP, void, env, tl, tl, tl) #if !defined(CONFIG_USER_ONLY) DEF_HELPER_2(store_msr, void, env, tl) +DEF_HELPER_1(ppc_maybe_interrupt, void, env) DEF_HELPER_1(rfi, void, env) DEF_HELPER_1(40x_rfci, void, env) DEF_HELPER_1(rfci, void, env) diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 12235ea2e9..2e85e124ab 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -260,6 +260,8 @@ int hreg_store_msr(CPUPPCState *env, target_ulong value= , int alter_hv) env->msr =3D value; hreg_compute_hflags(env); #if !defined(CONFIG_USER_ONLY) + ppc_maybe_interrupt(env); + if (unlikely(FIELD_EX64(env->msr, MSR, POW))) { if (!env->pending_interrupts && (*env->check_pow)(env)) { cs->halted =3D 1; diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 58fbc15954..29e4b728e2 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -305,6 +305,14 @@ static void gen_icount_io_start(DisasContext *ctx) } } =20 +#if !defined(CONFIG_USER_ONLY) +static void gen_ppc_maybe_interrupt(DisasContext *ctx) +{ + gen_icount_io_start(ctx); + gen_helper_ppc_maybe_interrupt(cpu_env); +} +#endif + /* * Tells the caller what is the appropriate exception to generate and prep= ares * SPR registers for this exception. @@ -6161,7 +6169,6 @@ static void gen_tlbilx_booke206(DisasContext *ctx) #endif /* defined(CONFIG_USER_ONLY) */ } =20 - /* wrtee */ static void gen_wrtee(DisasContext *ctx) { @@ -6175,6 +6182,7 @@ static void gen_wrtee(DisasContext *ctx) tcg_gen_andi_tl(t0, cpu_gpr[rD(ctx->opcode)], (1 << MSR_EE)); tcg_gen_andi_tl(cpu_msr, cpu_msr, ~(1 << MSR_EE)); tcg_gen_or_tl(cpu_msr, cpu_msr, t0); + gen_ppc_maybe_interrupt(ctx); tcg_temp_free(t0); /* * Stop translation to have a chance to raise an exception if we @@ -6193,6 +6201,7 @@ static void gen_wrteei(DisasContext *ctx) CHK_SV(ctx); if (ctx->opcode & 0x00008000) { tcg_gen_ori_tl(cpu_msr, cpu_msr, (1 << MSR_EE)); + gen_ppc_maybe_interrupt(ctx); /* Stop translation to have a chance to raise an exception */ ctx->base.is_jmp =3D DISAS_EXIT_UPDATE; } else { --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975651; cv=none; d=zohomail.com; s=zohoarc; b=gA0Y4Qegbchrwtnglc3AYmfgWoesEcACxDnH/1+C7NyAVdPytf7NJZaZqECpIZSP5EwA0A30bKOm6NHR0yPgiUzHyDQ2MbofGB8PQ0824FEOoD3b6iyZe2HnVW71rTeYymBNW3FF9VnaIOWxU5VGnNLH0eRhD5GURG++JQvCeOk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975651; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=uJJzyadKpcWW4PIGFMTYf+Agiu7/dhHlDhFZPtlxgb0=; b=KWRoixJC09y6W2j8lhCuDM47C8bdqHtZyTGLnwW9dl9jyUOIZ9StW11R7cyxTFB9UcvHzTDrsSc77It+i68z9fASTXsJtdNoI2XcB7vkXUx0qr7eyzinYr8vUeVtsDLQX02sJmrjMyPZXtxhRFEcqKKsD7Z4l/EPTXaICCuiqGo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975651138349.2564202787937; Fri, 28 Oct 2022 09:47:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSi-00016p-I8; Fri, 28 Oct 2022 12:44:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSS8-0003fR-Fz; Fri, 28 Oct 2022 12:43:30 -0400 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSS6-0000gc-OS; Fri, 28 Oct 2022 12:43:28 -0400 Received: by mail-oi1-x22e.google.com with SMTP id l5so6703413oif.7; Fri, 28 Oct 2022 09:43:25 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=uJJzyadKpcWW4PIGFMTYf+Agiu7/dhHlDhFZPtlxgb0=; b=UD0eyX7JaN1Xy74XG38Ow5YmdPh1nn4cA+OfX2DkPLrl8Mr2j+h1GjsAqmE2cDOtD4 CjaVtmYvo1FldQnukUPp68ls2hwqlkgS4ZN9k5oJqaWIvt/AWnCjeel+Vkx/xgUkI7RT InYBvZO+2O8N/IIVhaMHK/Mlghukhcr1JWxLK/e9ALZgCczFj6uKPVQ9FW8Onod81C3R By4v3YsYJw8bTzLvtVWqABRbQNPB/DfCrpxTz9K/w4OK02i+9m3GreKL0AhmC3oKxGLK gaDeHDrEFy1tYPOxsG7EepFDTGrtIJqSv/wxhISZhOAzQh9dQolz75Dfa3gHAfy9YU/X nyVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uJJzyadKpcWW4PIGFMTYf+Agiu7/dhHlDhFZPtlxgb0=; b=2vifVHil7Fvggu3YXaJT6VAh8nl261Fcu12hHru8sK8Dy8mt4N+H5VLpIpfUV3UJgg 0rNjR6rBuf2uencmo0qcoRnA2XZzlduii3Hm1CMPPbzWdaiEu6SzZZB2sZcnLLKSJylG oGY34NHOgZmuoDhX6+Lj1gCvcrQNX1E0hA28cZ7k6okHdErD1OXAvyP+74sRqgqN9sG2 /EH0+b+ruzAFnwHl/MPARAojQ8t8V6ftzES0zTnDe8Fc40Kc8lZpfYUa+QIVc6kjLB3W tkg/383kK8AF5H6QTX1K8MUzDczf2frxByuP34DygELHL59CWZdbobNLe4WwAu2fn8XZ sygA== X-Gm-Message-State: ACrzQf23LZ0JGoIKdpEX0zrUOhog26yH7klaGzs3omTVpBMU6Bu6vK24 gRv40zL2iOP+nKQBFCZ0E9vz253WezufnA== X-Google-Smtp-Source: AMsMyM4sghuBOAqYeos/9Ozm3A4n8+lg3AOx1XiQqYsOM6Mr5sJLoaY7+0p03WMZvRdkH+C61vGWDA== X-Received: by 2002:a05:6808:1205:b0:354:2815:4f3c with SMTP id a5-20020a056808120500b0035428154f3cmr8702887oil.26.1666975405102; Fri, 28 Oct 2022 09:43:25 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 46/62] target/ppc: unify cpu->has_work based on cs->interrupt_request Date: Fri, 28 Oct 2022 13:39:35 -0300 Message-Id: <20221028163951.810456-47-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22e; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975652740100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Now that cs->interrupt_request indicates if there is any unmasked interrupt, checking if the CPU has work to do can be simplified to a single check that works for all CPU models. Reviewed-by: Fabiano Rosas Signed-off-by: Matheus Ferst Message-Id: <20221021142156.4134411-3-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu_init.c | 94 +------------------------------------------ 1 file changed, 1 insertion(+), 93 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index 5238229cd6..b14905547c 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -5984,27 +5984,10 @@ int p7_interrupt_powersave(CPUPPCState *env) return 0; } =20 -static bool cpu_has_work_POWER7(CPUState *cs) -{ - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *env =3D &cpu->env; - - if (cs->halted) { - if (!(cs->interrupt_request & CPU_INTERRUPT_HARD)) { - return false; - } - return p7_interrupt_powersave(env) !=3D 0; - } else { - return FIELD_EX64(env->msr, MSR, EE) && - (cs->interrupt_request & CPU_INTERRUPT_HARD); - } -} - POWERPC_FAMILY(POWER7)(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); PowerPCCPUClass *pcc =3D POWERPC_CPU_CLASS(oc); - CPUClass *cc =3D CPU_CLASS(oc); =20 dc->fw_name =3D "PowerPC,POWER7"; dc->desc =3D "POWER7"; @@ -6013,7 +5996,6 @@ POWERPC_FAMILY(POWER7)(ObjectClass *oc, void *data) pcc->pcr_supported =3D PCR_COMPAT_2_06 | PCR_COMPAT_2_05; pcc->init_proc =3D init_proc_POWER7; pcc->check_pow =3D check_pow_nocheck; - cc->has_work =3D cpu_has_work_POWER7; pcc->insns_flags =3D PPC_INSNS_BASE | PPC_ISEL | PPC_STRING | PPC_MFTB= | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | @@ -6170,27 +6152,10 @@ int p8_interrupt_powersave(CPUPPCState *env) return 0; } =20 -static bool cpu_has_work_POWER8(CPUState *cs) -{ - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *env =3D &cpu->env; - - if (cs->halted) { - if (!(cs->interrupt_request & CPU_INTERRUPT_HARD)) { - return false; - } - return p8_interrupt_powersave(env) !=3D 0; - } else { - return FIELD_EX64(env->msr, MSR, EE) && - (cs->interrupt_request & CPU_INTERRUPT_HARD); - } -} - POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); PowerPCCPUClass *pcc =3D POWERPC_CPU_CLASS(oc); - CPUClass *cc =3D CPU_CLASS(oc); =20 dc->fw_name =3D "PowerPC,POWER8"; dc->desc =3D "POWER8"; @@ -6199,7 +6164,6 @@ POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data) pcc->pcr_supported =3D PCR_COMPAT_2_07 | PCR_COMPAT_2_06 | PCR_COMPAT_= 2_05; pcc->init_proc =3D init_proc_POWER8; pcc->check_pow =3D check_pow_nocheck; - cc->has_work =3D cpu_has_work_POWER8; pcc->insns_flags =3D PPC_INSNS_BASE | PPC_ISEL | PPC_STRING | PPC_MFTB= | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | @@ -6407,35 +6371,10 @@ int p9_interrupt_powersave(CPUPPCState *env) return 0; } =20 -static bool cpu_has_work_POWER9(CPUState *cs) -{ - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *env =3D &cpu->env; - - if (cs->halted) { - uint64_t psscr =3D env->spr[SPR_PSSCR]; - - if (!(cs->interrupt_request & CPU_INTERRUPT_HARD)) { - return false; - } - - /* If EC is clear, just return true on any pending interrupt */ - if (!(psscr & PSSCR_EC)) { - return true; - } - - return p9_interrupt_powersave(env) !=3D 0; - } else { - return FIELD_EX64(env->msr, MSR, EE) && - (cs->interrupt_request & CPU_INTERRUPT_HARD); - } -} - POWERPC_FAMILY(POWER9)(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); PowerPCCPUClass *pcc =3D POWERPC_CPU_CLASS(oc); - CPUClass *cc =3D CPU_CLASS(oc); =20 dc->fw_name =3D "PowerPC,POWER9"; dc->desc =3D "POWER9"; @@ -6445,7 +6384,6 @@ POWERPC_FAMILY(POWER9)(ObjectClass *oc, void *data) PCR_COMPAT_2_05; pcc->init_proc =3D init_proc_POWER9; pcc->check_pow =3D check_pow_nocheck; - cc->has_work =3D cpu_has_work_POWER9; pcc->insns_flags =3D PPC_INSNS_BASE | PPC_ISEL | PPC_STRING | PPC_MFTB= | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | @@ -6604,35 +6542,10 @@ static bool ppc_pvr_match_power10(PowerPCCPUClass *= pcc, uint32_t pvr, bool best) return false; } =20 -static bool cpu_has_work_POWER10(CPUState *cs) -{ - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *env =3D &cpu->env; - - if (cs->halted) { - uint64_t psscr =3D env->spr[SPR_PSSCR]; - - if (!(cs->interrupt_request & CPU_INTERRUPT_HARD)) { - return false; - } - - /* If EC is clear, just return true on any pending interrupt */ - if (!(psscr & PSSCR_EC)) { - return true; - } - - return p9_interrupt_powersave(env) !=3D 0; - } else { - return FIELD_EX64(env->msr, MSR, EE) && - (cs->interrupt_request & CPU_INTERRUPT_HARD); - } -} - POWERPC_FAMILY(POWER10)(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); PowerPCCPUClass *pcc =3D POWERPC_CPU_CLASS(oc); - CPUClass *cc =3D CPU_CLASS(oc); =20 dc->fw_name =3D "PowerPC,POWER10"; dc->desc =3D "POWER10"; @@ -6643,7 +6556,6 @@ POWERPC_FAMILY(POWER10)(ObjectClass *oc, void *data) PCR_COMPAT_2_06 | PCR_COMPAT_2_05; pcc->init_proc =3D init_proc_POWER10; pcc->check_pow =3D check_pow_nocheck; - cc->has_work =3D cpu_has_work_POWER10; pcc->insns_flags =3D PPC_INSNS_BASE | PPC_ISEL | PPC_STRING | PPC_MFTB= | PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | @@ -7216,11 +7128,7 @@ static void ppc_restore_state_to_opc(CPUState *cs, =20 static bool ppc_cpu_has_work(CPUState *cs) { - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *env =3D &cpu->env; - - return FIELD_EX64(env->msr, MSR, EE) && - (cs->interrupt_request & CPU_INTERRUPT_HARD); + return cs->interrupt_request & CPU_INTERRUPT_HARD; } =20 static void ppc_cpu_reset(DeviceState *dev) --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975469; cv=none; d=zohomail.com; s=zohoarc; b=EMm8yRA1yzYFWHLSr7VurfZc3oxvn4xYjmmoz1bVEqK54fJ9XGK/70adZgF3x58WrrWgdzXjGY0NP62BtvhThTlxzpQ+gsK09IUtGGUf94hbRy/7gTb10c81PAwc90MSfP1Nn4+Eo9T0+O+d//zBRu4a9NEiljzSaJ3HhPTYhe8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975469; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=SwCee6JalNBuPwrTshw94wej6lkYLuxpGUnAwSsXZL4=; b=LD4I74r+ZoDIGpo+k/QjEbs3L4Fy9FcQIOu+jNcIPr77MhP7iK7O289xIvDploVF2mbsqGswJSQRTOHKNFbBlisy3hoyc5DSpJxkmXjl8Ol73YAUrtJ1Xs+RiJXY7eYoybLLuGps3AdT73BV+QqYuLEMsgO9Osyf85oRgJStuvQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975469238663.8891415115882; Fri, 28 Oct 2022 09:44:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSk-0001Yp-I8; Fri, 28 Oct 2022 12:44:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSD-0004dp-RP; Fri, 28 Oct 2022 12:43:33 -0400 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSB-0000op-J0; Fri, 28 Oct 2022 12:43:33 -0400 Received: by mail-oi1-x236.google.com with SMTP id i7so6718668oif.4; Fri, 28 Oct 2022 09:43:30 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SwCee6JalNBuPwrTshw94wej6lkYLuxpGUnAwSsXZL4=; b=P4aBBUhG3SqGgpQ2Rk7b/UL0G9cJwIP3UYc5kLx4gk5vqd2B2zq8cZPDHiLrgpP5Li f2zfNy3+PXBvUrKU02RYE4B/+chRXdXQI23Iyly0IYJFEubJJeVSX2FSbe3ps8iSD5Zh oB7dCKP3VcgbBkn9Q6hl7+3Gd51ARi/7dgTyWfDMn6WaX4vogJaTxIGZHSIXjX/CALzb jxxjLKpzL6ChhApTJ7OGGaexfjDLgYrRSYGqkBPPqYCk9kVkC6NckgZFhJG8gVm+U3cD 2Tkt5cpG2xOLWKJUMbjx4KQOCc4kdSCIRctCHkd14KLr6IM9FqEgxwCALkCMC0FlErrS w8Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SwCee6JalNBuPwrTshw94wej6lkYLuxpGUnAwSsXZL4=; b=vFHO+9gc0k+mlrsk59XtetzizlDcMFfdwgChencpEp+ts0mBtNtiK362nKJCWdQ1QJ 9bCMd3SIS7QuJH+dowDey6LF+IBb3LwX21bZzw0gSs012O+0aTTaBSz1CMXTxWZI7loU 6S5BeKGoVxXRFrVZ+5AS4iWr18hUpUs35LvYV7+NvfsIZzNPh4QuAocQDajhm03YW8yK ejU75PQmSLV89mxVBga2yqYcvnnAIfFYxa/Qh8X0qmy3QslBzh02y62xGSPUyxtjjT/d /LH25Rv9wbCT8GZ5mHvpm1v679aSST8Fmxu8TS7U+xvIFMPHIW9JhJsq5RMExU6VzR0k YJcQ== X-Gm-Message-State: ACrzQf2yTvVhNVQnY4zX7ghQX0wbxnLY/ZsyYEH8dqTV5tsO0an6U7jM +i4xxBZyl+n/G7ZfvOhhKqm6+RFDQ8PM1g== X-Google-Smtp-Source: AMsMyM7/WepuycqoAmOLSoi+jQnLcqyeR0M1cQbAkXq9A5XCoBrGrzFZMUfj/NEDLi6Zg2Vn/c27cw== X-Received: by 2002:a05:6808:1207:b0:353:e6cf:6d46 with SMTP id a7-20020a056808120700b00353e6cf6d46mr168499oil.207.1666975409722; Fri, 28 Oct 2022 09:43:29 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Matheus Ferst , Fabiano Rosas , Daniel Henrique Barboza Subject: [PULL 47/62] target/ppc: move the p*_interrupt_powersave methods to excp_helper.c Date: Fri, 28 Oct 2022 13:39:36 -0300 Message-Id: <20221028163951.810456-48-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::236; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x236.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975469799100003 Content-Type: text/plain; charset="utf-8" From: Matheus Ferst Move the methods to excp_helper.c and make them static. Reviewed-by: Fabiano Rosas Signed-off-by: Matheus Ferst Message-Id: <20221021142156.4134411-4-matheus.ferst@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu_init.c | 102 --------------------------------------- target/ppc/excp_helper.c | 102 +++++++++++++++++++++++++++++++++++++++ target/ppc/internal.h | 6 --- 3 files changed, 102 insertions(+), 108 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index b14905547c..32e94153d1 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -5960,30 +5960,6 @@ static bool ppc_pvr_match_power7(PowerPCCPUClass *pc= c, uint32_t pvr, bool best) return true; } =20 -int p7_interrupt_powersave(CPUPPCState *env) -{ - if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && - (env->spr[SPR_LPCR] & LPCR_P7_PECE0)) { - return PPC_INTERRUPT_EXT; - } - if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && - (env->spr[SPR_LPCR] & LPCR_P7_PECE1)) { - return PPC_INTERRUPT_DECR; - } - if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && - (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { - return PPC_INTERRUPT_MCK; - } - if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && - (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { - return PPC_INTERRUPT_HMI; - } - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return PPC_INTERRUPT_RESET; - } - return 0; -} - POWERPC_FAMILY(POWER7)(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); @@ -6120,38 +6096,6 @@ static bool ppc_pvr_match_power8(PowerPCCPUClass *pc= c, uint32_t pvr, bool best) return true; } =20 -int p8_interrupt_powersave(CPUPPCState *env) -{ - if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE2)) { - return PPC_INTERRUPT_EXT; - } - if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE3)) { - return PPC_INTERRUPT_DECR; - } - if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { - return PPC_INTERRUPT_MCK; - } - if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { - return PPC_INTERRUPT_HMI; - } - if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE0)) { - return PPC_INTERRUPT_DOORBELL; - } - if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && - (env->spr[SPR_LPCR] & LPCR_P8_PECE1)) { - return PPC_INTERRUPT_HDOORBELL; - } - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return PPC_INTERRUPT_RESET; - } - return 0; -} - POWERPC_FAMILY(POWER8)(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); @@ -6325,52 +6269,6 @@ static bool ppc_pvr_match_power9(PowerPCCPUClass *pc= c, uint32_t pvr, bool best) return false; } =20 -int p9_interrupt_powersave(CPUPPCState *env) -{ - /* External Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && - (env->spr[SPR_LPCR] & LPCR_EEE)) { - bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); - if (!heic || !FIELD_EX64_HV(env->msr) || - FIELD_EX64(env->msr, MSR, PR)) { - return PPC_INTERRUPT_EXT; - } - } - /* Decrementer Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && - (env->spr[SPR_LPCR] & LPCR_DEE)) { - return PPC_INTERRUPT_DECR; - } - /* Machine Check or Hypervisor Maintenance Exception */ - if (env->spr[SPR_LPCR] & LPCR_OEE) { - if (env->pending_interrupts & PPC_INTERRUPT_MCK) { - return PPC_INTERRUPT_MCK; - } - if (env->pending_interrupts & PPC_INTERRUPT_HMI) { - return PPC_INTERRUPT_HMI; - } - } - /* Privileged Doorbell Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && - (env->spr[SPR_LPCR] & LPCR_PDEE)) { - return PPC_INTERRUPT_DOORBELL; - } - /* Hypervisor Doorbell Exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && - (env->spr[SPR_LPCR] & LPCR_HDEE)) { - return PPC_INTERRUPT_HDOORBELL; - } - /* Hypervisor virtualization exception */ - if ((env->pending_interrupts & PPC_INTERRUPT_HVIRT) && - (env->spr[SPR_LPCR] & LPCR_HVEE)) { - return PPC_INTERRUPT_HVIRT; - } - if (env->pending_interrupts & PPC_INTERRUPT_RESET) { - return PPC_INTERRUPT_RESET; - } - return 0; -} - POWERPC_FAMILY(POWER9)(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 07480079f7..09a81561d4 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1692,6 +1692,30 @@ void ppc_cpu_do_interrupt(CPUState *cs) PPC_INTERRUPT_PIT | PPC_INTERRUPT_DOORBELL | PPC_INTERRUPT_HDOORBELL = | \ PPC_INTERRUPT_THERM | PPC_INTERRUPT_EBB) =20 +static int p7_interrupt_powersave(CPUPPCState *env) +{ + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && + (env->spr[SPR_LPCR] & LPCR_P7_PECE0)) { + return PPC_INTERRUPT_EXT; + } + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && + (env->spr[SPR_LPCR] & LPCR_P7_PECE1)) { + return PPC_INTERRUPT_DECR; + } + if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && + (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { + return PPC_INTERRUPT_MCK; + } + if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && + (env->spr[SPR_LPCR] & LPCR_P7_PECE2)) { + return PPC_INTERRUPT_HMI; + } + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + return 0; +} + static int p7_next_unmasked_interrupt(CPUPPCState *env) { PowerPCCPU *cpu =3D env_archcpu(env); @@ -1750,6 +1774,38 @@ static int p7_next_unmasked_interrupt(CPUPPCState *e= nv) PPC_INTERRUPT_CEXT | PPC_INTERRUPT_WDT | PPC_INTERRUPT_CDOORBELL | \ PPC_INTERRUPT_FIT | PPC_INTERRUPT_PIT | PPC_INTERRUPT_THERM) =20 +static int p8_interrupt_powersave(CPUPPCState *env) +{ + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE2)) { + return PPC_INTERRUPT_EXT; + } + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE3)) { + return PPC_INTERRUPT_DECR; + } + if ((env->pending_interrupts & PPC_INTERRUPT_MCK) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { + return PPC_INTERRUPT_MCK; + } + if ((env->pending_interrupts & PPC_INTERRUPT_HMI) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE4)) { + return PPC_INTERRUPT_HMI; + } + if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE0)) { + return PPC_INTERRUPT_DOORBELL; + } + if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && + (env->spr[SPR_LPCR] & LPCR_P8_PECE1)) { + return PPC_INTERRUPT_HDOORBELL; + } + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + return 0; +} + static int p8_next_unmasked_interrupt(CPUPPCState *env) { PowerPCCPU *cpu =3D env_archcpu(env); @@ -1825,6 +1881,52 @@ static int p8_next_unmasked_interrupt(CPUPPCState *e= nv) PPC_INTERRUPT_WDT | PPC_INTERRUPT_CDOORBELL | PPC_INTERRUPT_FIT | \ PPC_INTERRUPT_PIT | PPC_INTERRUPT_THERM) =20 +static int p9_interrupt_powersave(CPUPPCState *env) +{ + /* External Exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_EXT) && + (env->spr[SPR_LPCR] & LPCR_EEE)) { + bool heic =3D !!(env->spr[SPR_LPCR] & LPCR_HEIC); + if (!heic || !FIELD_EX64_HV(env->msr) || + FIELD_EX64(env->msr, MSR, PR)) { + return PPC_INTERRUPT_EXT; + } + } + /* Decrementer Exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_DECR) && + (env->spr[SPR_LPCR] & LPCR_DEE)) { + return PPC_INTERRUPT_DECR; + } + /* Machine Check or Hypervisor Maintenance Exception */ + if (env->spr[SPR_LPCR] & LPCR_OEE) { + if (env->pending_interrupts & PPC_INTERRUPT_MCK) { + return PPC_INTERRUPT_MCK; + } + if (env->pending_interrupts & PPC_INTERRUPT_HMI) { + return PPC_INTERRUPT_HMI; + } + } + /* Privileged Doorbell Exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_DOORBELL) && + (env->spr[SPR_LPCR] & LPCR_PDEE)) { + return PPC_INTERRUPT_DOORBELL; + } + /* Hypervisor Doorbell Exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_HDOORBELL) && + (env->spr[SPR_LPCR] & LPCR_HDEE)) { + return PPC_INTERRUPT_HDOORBELL; + } + /* Hypervisor virtualization exception */ + if ((env->pending_interrupts & PPC_INTERRUPT_HVIRT) && + (env->spr[SPR_LPCR] & LPCR_HVEE)) { + return PPC_INTERRUPT_HVIRT; + } + if (env->pending_interrupts & PPC_INTERRUPT_RESET) { + return PPC_INTERRUPT_RESET; + } + return 0; +} + static int p9_next_unmasked_interrupt(CPUPPCState *env) { PowerPCCPU *cpu =3D env_archcpu(env); diff --git a/target/ppc/internal.h b/target/ppc/internal.h index 25827ebf6f..337a362205 100644 --- a/target/ppc/internal.h +++ b/target/ppc/internal.h @@ -306,10 +306,4 @@ static inline int ger_pack_masks(int pmsk, int ymsk, i= nt xmsk) return msk; } =20 -#if defined(TARGET_PPC64) -int p9_interrupt_powersave(CPUPPCState *env); -int p8_interrupt_powersave(CPUPPCState *env); -int p7_interrupt_powersave(CPUPPCState *env); -#endif - #endif /* PPC_INTERNAL_H */ --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975625; cv=none; d=zohomail.com; s=zohoarc; b=P5m9i4/vN/JcAO0BnFYD2paPgDQjMoL24b8j4sb4F2I2tNM9Jxk2m1aJe3w1mUvYLwSUC7eIuNAP/SaFVrykRkNpemzUDEJQHOghXVds3wkJlpVSwGHR2Ua6HnWjbVetaDPFUFHsmKm2ng2gwbMVD8sp3TlrROVXnnaORhkIbds= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975625; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=V6zz+T5dEkiOvtqnTujfOC70dlY6aBg/xjocbjKDWsE=; b=cmnCAR4yaXZtQAxChl/oR+8Vy38WPANQPZBYV2LiRWHcDkMbtNvMe2cUs32cUXQZkrfrz4rrY2uwSk0O4zIEJDCGRc8YeTi0CuQeVmG1NQbXCjfm4P8lmprtxG8IyruwT/Xj0yFQu0/U/Dt3NvMSC7rWWyduMtFa0iV9syDBj+k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975625313525.862465726744; Fri, 28 Oct 2022 09:47:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSm-00020o-V5; Fri, 28 Oct 2022 12:44:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSI-0005aA-Kz; Fri, 28 Oct 2022 12:43:39 -0400 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSF-0000rU-Ny; Fri, 28 Oct 2022 12:43:38 -0400 Received: by mail-oi1-x231.google.com with SMTP id r76so175520oie.13; Fri, 28 Oct 2022 09:43:34 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V6zz+T5dEkiOvtqnTujfOC70dlY6aBg/xjocbjKDWsE=; b=BP/HmH+63dRBlaCKFQNAetsgey1LSOcX67OA9thVv8zlC51D9gfGtgU609X03kwb6B +koMCXqN3UFSkSa3vtZYoOIIbccyjmrIxuEK6Haf5AO/aL+Vd5JsKkn3DTytV3fblzU4 S1L/i6Yn1PLgCL86ukUbVnRXQ4f+OwJi4ngUYzGEXvKz1ByMofaxenqyqPuVQHay8KKh 6pyn4WC6aW6UM5GEcsuj4d+NgtegDeW30BBjkYfPOTeC9WQwYnCJrcmmfm7ZxTYm+F8n S+AvqE5AXsX47b5jDqjuDcFciyr0W3XZ3nGYLJh86sjVnqYmIoFswLeDzgv0VHk8MXpx OPQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V6zz+T5dEkiOvtqnTujfOC70dlY6aBg/xjocbjKDWsE=; b=2mgXXGvmfk/PVHnubxUb36z0WYFT9271JTxQhtSYoAu8YY/HN9Z5BaJojAVs6vStzP WnJUPMSN+sAv9oOV9KHpX9OpRFLazxXVj5UeP46XfgX/DPkjuCDtPLn99AoHhFkWhHEI 6E5741HoZ6v6iYJXbPnEPb7yK8HZyi5BalwE+S0MqdmFH25dAm9B+OXLrasCrG5rKf7m HpIvleRfWu3vroIOVDGbPNFtgEuUscg5GZk/l2mSHqWw69xZ+OLcPwXDYH0Uy5qcHObL 1q9C9k+xuB4gwV6o7XFUcaGTrDsTGaoipkxE/+XP5dDF9M+fIz57vDarfC2umgaBj93P cKEQ== X-Gm-Message-State: ACrzQf0revjU9phr380v3A38iwDK26U6aCOyUcm3cnWHTMFvhBxTHZnD 1XNYM/Codo+jy3ffg+urH0Sv2awh+jY/nw== X-Google-Smtp-Source: AMsMyM5kxLc+0Thde9fAhuktCIf7kfW9Jih3lsErRfYWE6Getzp965AyFtzYR3x0i0NICPmUiZaaGQ== X-Received: by 2002:a05:6808:f93:b0:355:2b6d:3da1 with SMTP id o19-20020a0568080f9300b003552b6d3da1mr8368060oiw.265.1666975413605; Fri, 28 Oct 2022 09:43:33 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, BALATON Zoltan , Daniel Henrique Barboza Subject: [PULL 48/62] ppc440_uc.c: Move DDR2 SDRAM controller model to ppc4xx_sdram.c Date: Fri, 28 Oct 2022 13:39:37 -0300 Message-Id: <20221028163951.810456-49-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::231; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x231.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975626711100003 From: BALATON Zoltan In order to move PPC4xx SDRAM controller models together move out the DDR2 controller model from ppc440_uc.c into a new ppc4xx_sdram.c file. Signed-off-by: BALATON Zoltan Reviewed-by: Daniel Henrique Barboza Message-Id: <2f2900f93e997480e54b7bf9c32bb482a0fb1022.1666194485.git.balato= n@eik.bme.hu> Signed-off-by: Daniel Henrique Barboza --- hw/ppc/meson.build | 3 +- hw/ppc/ppc440_uc.c | 332 ---------------------------------------- hw/ppc/ppc4xx_sdram.c | 348 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 350 insertions(+), 333 deletions(-) create mode 100644 hw/ppc/ppc4xx_sdram.c diff --git a/hw/ppc/meson.build b/hw/ppc/meson.build index 32babc9b48..c927337da0 100644 --- a/hw/ppc/meson.build +++ b/hw/ppc/meson.build @@ -59,8 +59,9 @@ ppc_ss.add(when: 'CONFIG_PPC440', if_true: files( 'ppc440_bamboo.c', 'ppc440_pcix.c', 'ppc440_uc.c')) ppc_ss.add(when: 'CONFIG_PPC4XX', if_true: files( + 'ppc4xx_devs.c', 'ppc4xx_pci.c', - 'ppc4xx_devs.c')) + 'ppc4xx_sdram.c')) ppc_ss.add(when: 'CONFIG_SAM460EX', if_true: files('sam460ex.c')) # PReP ppc_ss.add(when: 'CONFIG_PREP', if_true: files('prep.c')) diff --git a/hw/ppc/ppc440_uc.c b/hw/ppc/ppc440_uc.c index 5fbf44009e..651263926e 100644 --- a/hw/ppc/ppc440_uc.c +++ b/hw/ppc/ppc440_uc.c @@ -10,21 +10,14 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "qemu/error-report.h" #include "qapi/error.h" #include "qemu/log.h" -#include "qemu/module.h" #include "hw/irq.h" -#include "exec/memory.h" -#include "cpu.h" #include "hw/ppc/ppc4xx.h" #include "hw/qdev-properties.h" #include "hw/pci/pci.h" -#include "sysemu/block-backend.h" #include "sysemu/reset.h" #include "ppc440.h" -#include "qom/object.h" -#include "trace.h" =20 /*************************************************************************= ****/ /* L2 Cache as SRAM */ @@ -478,331 +471,6 @@ void ppc4xx_sdr_init(CPUPPCState *env) sdr, &dcr_read_sdr, &dcr_write_sdr); } =20 -/*************************************************************************= ****/ -/* SDRAM controller */ -enum { - SDRAM0_CFGADDR =3D 0x10, - SDRAM0_CFGDATA, - SDRAM_R0BAS =3D 0x40, - SDRAM_R1BAS, - SDRAM_R2BAS, - SDRAM_R3BAS, - SDRAM_CONF1HB =3D 0x45, - SDRAM_PLBADDULL =3D 0x4a, - SDRAM_CONF1LL =3D 0x4b, - SDRAM_CONFPATHB =3D 0x4f, - SDRAM_PLBADDUHB =3D 0x50, -}; - -static uint32_t sdram_ddr2_bcr(hwaddr ram_base, hwaddr ram_size) -{ - uint32_t bcr; - - switch (ram_size) { - case 8 * MiB: - bcr =3D 0xffc0; - break; - case 16 * MiB: - bcr =3D 0xff80; - break; - case 32 * MiB: - bcr =3D 0xff00; - break; - case 64 * MiB: - bcr =3D 0xfe00; - break; - case 128 * MiB: - bcr =3D 0xfc00; - break; - case 256 * MiB: - bcr =3D 0xf800; - break; - case 512 * MiB: - bcr =3D 0xf000; - break; - case 1 * GiB: - bcr =3D 0xe000; - break; - case 2 * GiB: - bcr =3D 0xc000; - break; - case 4 * GiB: - bcr =3D 0x8000; - break; - default: - error_report("invalid RAM size " TARGET_FMT_plx, ram_size); - return 0; - } - bcr |=3D ram_base >> 2 & 0xffe00000; - bcr |=3D 1; - - return bcr; -} - -static inline hwaddr sdram_ddr2_base(uint32_t bcr) -{ - return (bcr & 0xffe00000) << 2; -} - -static uint64_t sdram_ddr2_size(uint32_t bcr) -{ - uint64_t size; - int sh; - - sh =3D 1024 - ((bcr >> 6) & 0x3ff); - size =3D 8 * MiB * sh; - - return size; -} - -static void sdram_bank_map(Ppc4xxSdramBank *bank) -{ - memory_region_init(&bank->container, NULL, "sdram-container", bank->si= ze); - memory_region_add_subregion(&bank->container, 0, &bank->ram); - memory_region_add_subregion(get_system_memory(), bank->base, - &bank->container); -} - -static void sdram_bank_unmap(Ppc4xxSdramBank *bank) -{ - memory_region_del_subregion(get_system_memory(), &bank->container); - memory_region_del_subregion(&bank->container, &bank->ram); - object_unparent(OBJECT(&bank->container)); -} - -static void sdram_ddr2_set_bcr(Ppc4xxSdramDdr2State *sdram, int i, - uint32_t bcr, int enabled) -{ - if (sdram->bank[i].bcr & 1) { - /* First unmap RAM if enabled */ - trace_ppc4xx_sdram_unmap(sdram_ddr2_base(sdram->bank[i].bcr), - sdram_ddr2_size(sdram->bank[i].bcr)); - sdram_bank_unmap(&sdram->bank[i]); - } - sdram->bank[i].bcr =3D bcr & 0xffe0ffc1; - if (enabled && (bcr & 1)) { - trace_ppc4xx_sdram_map(sdram_ddr2_base(bcr), sdram_ddr2_size(bcr)); - sdram_bank_map(&sdram->bank[i]); - } -} - -static void sdram_ddr2_map_bcr(Ppc4xxSdramDdr2State *sdram) -{ - int i; - - for (i =3D 0; i < sdram->nbanks; i++) { - if (sdram->bank[i].size) { - sdram_ddr2_set_bcr(sdram, i, - sdram_ddr2_bcr(sdram->bank[i].base, - sdram->bank[i].size), 1); - } else { - sdram_ddr2_set_bcr(sdram, i, 0, 0); - } - } -} - -static void sdram_ddr2_unmap_bcr(Ppc4xxSdramDdr2State *sdram) -{ - int i; - - for (i =3D 0; i < sdram->nbanks; i++) { - if (sdram->bank[i].size) { - sdram_ddr2_set_bcr(sdram, i, sdram->bank[i].bcr & ~1, 0); - } - } -} - -static uint32_t sdram_ddr2_dcr_read(void *opaque, int dcrn) -{ - Ppc4xxSdramDdr2State *sdram =3D opaque; - uint32_t ret =3D 0; - - switch (dcrn) { - case SDRAM_R0BAS: - case SDRAM_R1BAS: - case SDRAM_R2BAS: - case SDRAM_R3BAS: - if (sdram->bank[dcrn - SDRAM_R0BAS].size) { - ret =3D sdram_ddr2_bcr(sdram->bank[dcrn - SDRAM_R0BAS].base, - sdram->bank[dcrn - SDRAM_R0BAS].size); - } - break; - case SDRAM_CONF1HB: - case SDRAM_CONF1LL: - case SDRAM_CONFPATHB: - case SDRAM_PLBADDULL: - case SDRAM_PLBADDUHB: - break; - case SDRAM0_CFGADDR: - ret =3D sdram->addr; - break; - case SDRAM0_CFGDATA: - switch (sdram->addr) { - case 0x14: /* SDRAM_MCSTAT (405EX) */ - case 0x1F: - ret =3D 0x80000000; - break; - case 0x21: /* SDRAM_MCOPT2 */ - ret =3D sdram->mcopt2; - break; - case 0x40: /* SDRAM_MB0CF */ - ret =3D 0x00008001; - break; - case 0x7A: /* SDRAM_DLCR */ - ret =3D 0x02000000; - break; - case 0xE1: /* SDR0_DDR0 */ - ret =3D SDR0_DDR0_DDRM_ENCODE(1) | SDR0_DDR0_DDRM_DDR1; - break; - default: - break; - } - break; - default: - break; - } - - return ret; -} - -#define SDRAM_DDR2_MCOPT2_DCEN BIT(27) - -static void sdram_ddr2_dcr_write(void *opaque, int dcrn, uint32_t val) -{ - Ppc4xxSdramDdr2State *sdram =3D opaque; - - switch (dcrn) { - case SDRAM_R0BAS: - case SDRAM_R1BAS: - case SDRAM_R2BAS: - case SDRAM_R3BAS: - case SDRAM_CONF1HB: - case SDRAM_CONF1LL: - case SDRAM_CONFPATHB: - case SDRAM_PLBADDULL: - case SDRAM_PLBADDUHB: - break; - case SDRAM0_CFGADDR: - sdram->addr =3D val; - break; - case SDRAM0_CFGDATA: - switch (sdram->addr) { - case 0x00: /* B0CR */ - break; - case 0x21: /* SDRAM_MCOPT2 */ - if (!(sdram->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && - (val & SDRAM_DDR2_MCOPT2_DCEN)) { - trace_ppc4xx_sdram_enable("enable"); - /* validate all RAM mappings */ - sdram_ddr2_map_bcr(sdram); - sdram->mcopt2 |=3D SDRAM_DDR2_MCOPT2_DCEN; - } else if ((sdram->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && - !(val & SDRAM_DDR2_MCOPT2_DCEN)) { - trace_ppc4xx_sdram_enable("disable"); - /* invalidate all RAM mappings */ - sdram_ddr2_unmap_bcr(sdram); - sdram->mcopt2 &=3D ~SDRAM_DDR2_MCOPT2_DCEN; - } - break; - default: - break; - } - break; - default: - break; - } -} - -static void ppc4xx_sdram_ddr2_reset(DeviceState *dev) -{ - Ppc4xxSdramDdr2State *sdram =3D PPC4xx_SDRAM_DDR2(dev); - - sdram->addr =3D 0; - sdram->mcopt2 =3D 0; -} - -static void ppc4xx_sdram_ddr2_realize(DeviceState *dev, Error **errp) -{ - Ppc4xxSdramDdr2State *s =3D PPC4xx_SDRAM_DDR2(dev); - Ppc4xxDcrDeviceState *dcr =3D PPC4xx_DCR_DEVICE(dev); - /* - * SoC also has 4 GiB but that causes problem with 32 bit - * builds (4*GiB overflows the 32 bit ram_addr_t). - */ - const ram_addr_t valid_bank_sizes[] =3D { - 2 * GiB, 1 * GiB, 512 * MiB, 256 * MiB, 128 * MiB, - 64 * MiB, 32 * MiB, 16 * MiB, 8 * MiB, 0 - }; - - if (s->nbanks < 1 || s->nbanks > 4) { - error_setg(errp, "Invalid number of RAM banks"); - return; - } - if (!s->dram_mr) { - error_setg(errp, "Missing dram memory region"); - return; - } - ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, valid_bank_sizes); - - ppc4xx_dcr_register(dcr, SDRAM0_CFGADDR, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM0_CFGDATA, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - - ppc4xx_dcr_register(dcr, SDRAM_R0BAS, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM_R1BAS, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM_R2BAS, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM_R3BAS, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM_CONF1HB, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM_PLBADDULL, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM_CONF1LL, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM_CONFPATHB, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM_PLBADDUHB, - s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); -} - -static Property ppc4xx_sdram_ddr2_props[] =3D { - DEFINE_PROP_LINK("dram", Ppc4xxSdramDdr2State, dram_mr, TYPE_MEMORY_RE= GION, - MemoryRegion *), - DEFINE_PROP_UINT32("nbanks", Ppc4xxSdramDdr2State, nbanks, 4), - DEFINE_PROP_END_OF_LIST(), -}; - -static void ppc4xx_sdram_ddr2_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc4xx_sdram_ddr2_realize; - dc->reset =3D ppc4xx_sdram_ddr2_reset; - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; - device_class_set_props(dc, ppc4xx_sdram_ddr2_props); -} - -void ppc4xx_sdram_ddr2_enable(Ppc4xxSdramDdr2State *s) -{ - sdram_ddr2_dcr_write(s, SDRAM0_CFGADDR, 0x21); - sdram_ddr2_dcr_write(s, SDRAM0_CFGDATA, 0x08000000); -} - -static const TypeInfo ppc4xx_types[] =3D { - { - .name =3D TYPE_PPC4xx_SDRAM_DDR2, - .parent =3D TYPE_PPC4xx_DCR_DEVICE, - .instance_size =3D sizeof(Ppc4xxSdramDdr2State), - .class_init =3D ppc4xx_sdram_ddr2_class_init, - } -}; -DEFINE_TYPES(ppc4xx_types) - /*************************************************************************= ****/ /* PLB to AHB bridge */ enum { diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c new file mode 100644 index 0000000000..b49a7ed60a --- /dev/null +++ b/hw/ppc/ppc4xx_sdram.c @@ -0,0 +1,348 @@ +/* + * DDR2 SDRAM controller: + * Copyright (c) 2012 Fran=C3=A7ois Revol + * Copyright (c) 2016-2019 BALATON Zoltan + * + * This work is licensed under the GNU GPL license version 2 or later. + */ + +#include "qemu/osdep.h" +#include "qemu/units.h" +#include "qapi/error.h" +#include "exec/address-spaces.h" /* get_system_memory() */ +#include "hw/irq.h" +#include "hw/qdev-properties.h" +#include "hw/ppc/ppc4xx.h" +#include "trace.h" + +/*************************************************************************= ****/ +/* Shared functions */ + +static void sdram_bank_map(Ppc4xxSdramBank *bank) +{ + memory_region_init(&bank->container, NULL, "sdram-container", bank->si= ze); + memory_region_add_subregion(&bank->container, 0, &bank->ram); + memory_region_add_subregion(get_system_memory(), bank->base, + &bank->container); +} + +static void sdram_bank_unmap(Ppc4xxSdramBank *bank) +{ + memory_region_del_subregion(get_system_memory(), &bank->container); + memory_region_del_subregion(&bank->container, &bank->ram); + object_unparent(OBJECT(&bank->container)); +} + +enum { + SDRAM0_CFGADDR =3D 0x010, + SDRAM0_CFGDATA =3D 0x011, +}; + +/*************************************************************************= ****/ +/* DDR2 SDRAM controller */ +enum { + SDRAM_R0BAS =3D 0x40, + SDRAM_R1BAS, + SDRAM_R2BAS, + SDRAM_R3BAS, + SDRAM_CONF1HB =3D 0x45, + SDRAM_PLBADDULL =3D 0x4a, + SDRAM_CONF1LL =3D 0x4b, + SDRAM_CONFPATHB =3D 0x4f, + SDRAM_PLBADDUHB =3D 0x50, +}; + +static uint32_t sdram_ddr2_bcr(hwaddr ram_base, hwaddr ram_size) +{ + uint32_t bcr; + + switch (ram_size) { + case 8 * MiB: + bcr =3D 0xffc0; + break; + case 16 * MiB: + bcr =3D 0xff80; + break; + case 32 * MiB: + bcr =3D 0xff00; + break; + case 64 * MiB: + bcr =3D 0xfe00; + break; + case 128 * MiB: + bcr =3D 0xfc00; + break; + case 256 * MiB: + bcr =3D 0xf800; + break; + case 512 * MiB: + bcr =3D 0xf000; + break; + case 1 * GiB: + bcr =3D 0xe000; + break; + case 2 * GiB: + bcr =3D 0xc000; + break; + case 4 * GiB: + bcr =3D 0x8000; + break; + default: + error_report("invalid RAM size " TARGET_FMT_plx, ram_size); + return 0; + } + bcr |=3D ram_base >> 2 & 0xffe00000; + bcr |=3D 1; + + return bcr; +} + +static inline hwaddr sdram_ddr2_base(uint32_t bcr) +{ + return (bcr & 0xffe00000) << 2; +} + +static uint64_t sdram_ddr2_size(uint32_t bcr) +{ + uint64_t size; + int sh; + + sh =3D 1024 - ((bcr >> 6) & 0x3ff); + size =3D 8 * MiB * sh; + + return size; +} + +static void sdram_ddr2_set_bcr(Ppc4xxSdramDdr2State *sdram, int i, + uint32_t bcr, int enabled) +{ + if (sdram->bank[i].bcr & 1) { + /* First unmap RAM if enabled */ + trace_ppc4xx_sdram_unmap(sdram_ddr2_base(sdram->bank[i].bcr), + sdram_ddr2_size(sdram->bank[i].bcr)); + sdram_bank_unmap(&sdram->bank[i]); + } + sdram->bank[i].bcr =3D bcr & 0xffe0ffc1; + if (enabled && (bcr & 1)) { + trace_ppc4xx_sdram_map(sdram_ddr2_base(bcr), sdram_ddr2_size(bcr)); + sdram_bank_map(&sdram->bank[i]); + } +} + +static void sdram_ddr2_map_bcr(Ppc4xxSdramDdr2State *sdram) +{ + int i; + + for (i =3D 0; i < sdram->nbanks; i++) { + if (sdram->bank[i].size) { + sdram_ddr2_set_bcr(sdram, i, + sdram_ddr2_bcr(sdram->bank[i].base, + sdram->bank[i].size), 1); + } else { + sdram_ddr2_set_bcr(sdram, i, 0, 0); + } + } +} + +static void sdram_ddr2_unmap_bcr(Ppc4xxSdramDdr2State *sdram) +{ + int i; + + for (i =3D 0; i < sdram->nbanks; i++) { + if (sdram->bank[i].size) { + sdram_ddr2_set_bcr(sdram, i, sdram->bank[i].bcr & ~1, 0); + } + } +} + +static uint32_t sdram_ddr2_dcr_read(void *opaque, int dcrn) +{ + Ppc4xxSdramDdr2State *sdram =3D opaque; + uint32_t ret =3D 0; + + switch (dcrn) { + case SDRAM_R0BAS: + case SDRAM_R1BAS: + case SDRAM_R2BAS: + case SDRAM_R3BAS: + if (sdram->bank[dcrn - SDRAM_R0BAS].size) { + ret =3D sdram_ddr2_bcr(sdram->bank[dcrn - SDRAM_R0BAS].base, + sdram->bank[dcrn - SDRAM_R0BAS].size); + } + break; + case SDRAM_CONF1HB: + case SDRAM_CONF1LL: + case SDRAM_CONFPATHB: + case SDRAM_PLBADDULL: + case SDRAM_PLBADDUHB: + break; + case SDRAM0_CFGADDR: + ret =3D sdram->addr; + break; + case SDRAM0_CFGDATA: + switch (sdram->addr) { + case 0x14: /* SDRAM_MCSTAT (405EX) */ + case 0x1F: + ret =3D 0x80000000; + break; + case 0x21: /* SDRAM_MCOPT2 */ + ret =3D sdram->mcopt2; + break; + case 0x40: /* SDRAM_MB0CF */ + ret =3D 0x00008001; + break; + case 0x7A: /* SDRAM_DLCR */ + ret =3D 0x02000000; + break; + case 0xE1: /* SDR0_DDR0 */ + ret =3D SDR0_DDR0_DDRM_ENCODE(1) | SDR0_DDR0_DDRM_DDR1; + break; + default: + break; + } + break; + default: + break; + } + + return ret; +} + +#define SDRAM_DDR2_MCOPT2_DCEN BIT(27) + +static void sdram_ddr2_dcr_write(void *opaque, int dcrn, uint32_t val) +{ + Ppc4xxSdramDdr2State *sdram =3D opaque; + + switch (dcrn) { + case SDRAM_R0BAS: + case SDRAM_R1BAS: + case SDRAM_R2BAS: + case SDRAM_R3BAS: + case SDRAM_CONF1HB: + case SDRAM_CONF1LL: + case SDRAM_CONFPATHB: + case SDRAM_PLBADDULL: + case SDRAM_PLBADDUHB: + break; + case SDRAM0_CFGADDR: + sdram->addr =3D val; + break; + case SDRAM0_CFGDATA: + switch (sdram->addr) { + case 0x00: /* B0CR */ + break; + case 0x21: /* SDRAM_MCOPT2 */ + if (!(sdram->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && + (val & SDRAM_DDR2_MCOPT2_DCEN)) { + trace_ppc4xx_sdram_enable("enable"); + /* validate all RAM mappings */ + sdram_ddr2_map_bcr(sdram); + sdram->mcopt2 |=3D SDRAM_DDR2_MCOPT2_DCEN; + } else if ((sdram->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && + !(val & SDRAM_DDR2_MCOPT2_DCEN)) { + trace_ppc4xx_sdram_enable("disable"); + /* invalidate all RAM mappings */ + sdram_ddr2_unmap_bcr(sdram); + sdram->mcopt2 &=3D ~SDRAM_DDR2_MCOPT2_DCEN; + } + break; + default: + break; + } + break; + default: + break; + } +} + +static void ppc4xx_sdram_ddr2_reset(DeviceState *dev) +{ + Ppc4xxSdramDdr2State *sdram =3D PPC4xx_SDRAM_DDR2(dev); + + sdram->addr =3D 0; + sdram->mcopt2 =3D 0; +} + +static void ppc4xx_sdram_ddr2_realize(DeviceState *dev, Error **errp) +{ + Ppc4xxSdramDdr2State *s =3D PPC4xx_SDRAM_DDR2(dev); + Ppc4xxDcrDeviceState *dcr =3D PPC4xx_DCR_DEVICE(dev); + /* + * SoC also has 4 GiB but that causes problem with 32 bit + * builds (4*GiB overflows the 32 bit ram_addr_t). + */ + const ram_addr_t valid_bank_sizes[] =3D { + 2 * GiB, 1 * GiB, 512 * MiB, 256 * MiB, 128 * MiB, + 64 * MiB, 32 * MiB, 16 * MiB, 8 * MiB, 0 + }; + + if (s->nbanks < 1 || s->nbanks > 4) { + error_setg(errp, "Invalid number of RAM banks"); + return; + } + if (!s->dram_mr) { + error_setg(errp, "Missing dram memory region"); + return; + } + ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, valid_bank_sizes); + + ppc4xx_dcr_register(dcr, SDRAM0_CFGADDR, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM0_CFGDATA, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + + ppc4xx_dcr_register(dcr, SDRAM_R0BAS, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM_R1BAS, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM_R2BAS, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM_R3BAS, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM_CONF1HB, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM_PLBADDULL, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM_CONF1LL, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM_CONFPATHB, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM_PLBADDUHB, + s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); +} + +static Property ppc4xx_sdram_ddr2_props[] =3D { + DEFINE_PROP_LINK("dram", Ppc4xxSdramDdr2State, dram_mr, TYPE_MEMORY_RE= GION, + MemoryRegion *), + DEFINE_PROP_UINT32("nbanks", Ppc4xxSdramDdr2State, nbanks, 4), + DEFINE_PROP_END_OF_LIST(), +}; + +static void ppc4xx_sdram_ddr2_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + + dc->realize =3D ppc4xx_sdram_ddr2_realize; + dc->reset =3D ppc4xx_sdram_ddr2_reset; + /* Reason: only works as function of a ppc4xx SoC */ + dc->user_creatable =3D false; + device_class_set_props(dc, ppc4xx_sdram_ddr2_props); +} + +void ppc4xx_sdram_ddr2_enable(Ppc4xxSdramDdr2State *s) +{ + sdram_ddr2_dcr_write(s, SDRAM0_CFGADDR, 0x21); + sdram_ddr2_dcr_write(s, SDRAM0_CFGDATA, 0x08000000); +} + +static const TypeInfo ppc4xx_sdram_types[] =3D { + { + .name =3D TYPE_PPC4xx_SDRAM_DDR2, + .parent =3D TYPE_PPC4xx_DCR_DEVICE, + .instance_size =3D sizeof(Ppc4xxSdramDdr2State), + .class_init =3D ppc4xx_sdram_ddr2_class_init, + } +}; + +DEFINE_TYPES(ppc4xx_sdram_types) --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975727; cv=none; d=zohomail.com; s=zohoarc; b=cjMjxP9xYANGzEJTH8WwRGOOoZ+bSM9zErp7UVVZ91F9bi7H03EFmaHm3mJnz1zzGGvoFjdwYp6Nfj3CGErpHXe0tR3Nz3u61r01YGku1VF9AKWVr50okNlJ/D1Fy51cmHZUcrRGignoVvgqcJvD7SF3fa6H73FsHl9d+viW7OM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975727; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zoh2GCgCKX8vKXQBzCsdG5o5P3wDOP0a7GbvgIZF3jE=; b=DSwvRRObPYEvSw+faYfL4Wiqa44kd1bGuuEbjpk0U3dI5m/GvXSBHDJUSXUSWEsdZpvbpWUYAlvfQphWe2ppKXJrfjS6JRcr9Wp7ssDN+PkZVrZ/OC3DWrJYcpFt76Aul1jbKiqRIKFTsUn0o1elQPgnRHhOGXt8d/VMJdSPM5o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975727949443.1358527345021; Fri, 28 Oct 2022 09:48:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSo-0002IS-4B; Fri, 28 Oct 2022 12:44:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSN-00063q-1W; Fri, 28 Oct 2022 12:43:44 -0400 Received: from mail-ot1-x332.google.com ([2607:f8b0:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSJ-0000si-4x; Fri, 28 Oct 2022 12:43:41 -0400 Received: by mail-ot1-x332.google.com with SMTP id m5-20020a9d73c5000000b0066738ce4f12so3261171otk.12; Fri, 28 Oct 2022 09:43:38 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zoh2GCgCKX8vKXQBzCsdG5o5P3wDOP0a7GbvgIZF3jE=; b=H3e32zSrlHoJZ1pGQLZpVMpT4w69eG+c7zHUU+fF6KIbio5C4u7oPJtPwFMCnjPk9m Gt/EJA5QrcS2H5YZBNYN/lXMYgRw9Tk+n6dVh2qrMx0YPBEj/WUq/uS0sbU9q7aFpf3e k4iIrO8WbL9UwggRNC5BTQjTbeCCSETFEdSYyuC06jRha5SjD+XAcNKzMGU4XzjGeOys qTRuIrST6wO/LUMVy+/VYd/kVVb3s7+b+6sVNRZbhylY2kr8f2MlWUWzNr1lqLxpsP2v mPCjDG5sjfDPX8WK/7Yk3MlvczAGJTyNj0rCaEyfqsZ89iUaQCwBZ9tV9C/4Dnmll1x/ 1qUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zoh2GCgCKX8vKXQBzCsdG5o5P3wDOP0a7GbvgIZF3jE=; b=akpbT5FSc/ucI1oAfUgcnaJhgo78v6HGAf1MIGEAoOZxDKsXZgj5o8VRmHxK3vMgAL 5rQ/B47D0MqG4Rn2wMe0dyMiP4lODgb2gv97dtmqLI9PFcgHJg5t/lRURB9IfAEPem0E gRfqWMtvb9Z2umCu0PsgltJYyFoWZ2qBHXGocv07vUW2K43ujaU3mVkizfuAtCOYYspt x8gBzQOCD3/22fOu5FlQ4mQaZzQwcmwKELNISqr96w+bNCTIG+Aq6SxQocTb5YkW8yRU jVK89jCfiWh57YeHgxj9G6NVQDv0izCehLqXvuFvFYLvUYb02c8WyPGyw1lbjKHuHXKK ZAtw== X-Gm-Message-State: ACrzQf1NPWslu/anScSdzi+4XxrbVx1qPs6jrvtmf5G/SDHXeucWbGLm VSmotK+JBkdwzBEc8uP40Q3a+mMZf7ybsw== X-Google-Smtp-Source: AMsMyM5KRbCLLd3R/nIGm1pIjkWQ6Sb3C+Tinsb3qBw9N2W0Sr0PuYSsgVTGh4EwuzwboJ2Ji6s0nA== X-Received: by 2002:a9d:3642:0:b0:655:f25f:be55 with SMTP id w60-20020a9d3642000000b00655f25fbe55mr117758otb.13.1666975417314; Fri, 28 Oct 2022 09:43:37 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, BALATON Zoltan , Daniel Henrique Barboza Subject: [PULL 49/62] ppc4xx_devs.c: Move DDR SDRAM controller model to ppc4xx_sdram.c Date: Fri, 28 Oct 2022 13:39:38 -0300 Message-Id: <20221028163951.810456-50-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::332; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x332.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975729301100007 From: BALATON Zoltan Signed-off-by: BALATON Zoltan Reviewed-by: Daniel Henrique Barboza Message-Id: <3ea98072dbeb757942e25dcfcdd6a7a47738d2ca.1666194485.git.balato= n@eik.bme.hu> Signed-off-by: Daniel Henrique Barboza --- hw/ppc/ppc4xx_devs.c | 352 ---------------------------------------- hw/ppc/ppc4xx_sdram.c | 365 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 365 insertions(+), 352 deletions(-) diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c index 12af90f244..f737dbb3d6 100644 --- a/hw/ppc/ppc4xx_devs.c +++ b/hw/ppc/ppc4xx_devs.c @@ -24,357 +24,10 @@ =20 #include "qemu/osdep.h" #include "qemu/units.h" -#include "sysemu/reset.h" #include "cpu.h" -#include "hw/irq.h" -#include "hw/ppc/ppc.h" #include "hw/ppc/ppc4xx.h" #include "hw/qdev-properties.h" -#include "qemu/log.h" -#include "exec/address-spaces.h" -#include "qemu/error-report.h" #include "qapi/error.h" -#include "trace.h" - -/*************************************************************************= ****/ -/* SDRAM controller */ -enum { - SDRAM0_CFGADDR =3D 0x010, - SDRAM0_CFGDATA =3D 0x011, -}; - -/* - * XXX: TOFIX: some patches have made this code become inconsistent: - * there are type inconsistencies, mixing hwaddr, target_ulong - * and uint32_t - */ -static uint32_t sdram_ddr_bcr(hwaddr ram_base, hwaddr ram_size) -{ - uint32_t bcr; - - switch (ram_size) { - case 4 * MiB: - bcr =3D 0; - break; - case 8 * MiB: - bcr =3D 0x20000; - break; - case 16 * MiB: - bcr =3D 0x40000; - break; - case 32 * MiB: - bcr =3D 0x60000; - break; - case 64 * MiB: - bcr =3D 0x80000; - break; - case 128 * MiB: - bcr =3D 0xA0000; - break; - case 256 * MiB: - bcr =3D 0xC0000; - break; - default: - qemu_log_mask(LOG_GUEST_ERROR, - "%s: invalid RAM size 0x%" HWADDR_PRIx "\n", __func_= _, - ram_size); - return 0; - } - bcr |=3D ram_base & 0xFF800000; - bcr |=3D 1; - - return bcr; -} - -static inline hwaddr sdram_ddr_base(uint32_t bcr) -{ - return bcr & 0xFF800000; -} - -static target_ulong sdram_ddr_size(uint32_t bcr) -{ - target_ulong size; - int sh; - - sh =3D (bcr >> 17) & 0x7; - if (sh =3D=3D 7) { - size =3D -1; - } else { - size =3D (4 * MiB) << sh; - } - - return size; -} - -static void sdram_ddr_set_bcr(Ppc4xxSdramDdrState *sdram, int i, - uint32_t bcr, int enabled) -{ - if (sdram->bank[i].bcr & 1) { - /* Unmap RAM */ - trace_ppc4xx_sdram_unmap(sdram_ddr_base(sdram->bank[i].bcr), - sdram_ddr_size(sdram->bank[i].bcr)); - memory_region_del_subregion(get_system_memory(), - &sdram->bank[i].container); - memory_region_del_subregion(&sdram->bank[i].container, - &sdram->bank[i].ram); - object_unparent(OBJECT(&sdram->bank[i].container)); - } - sdram->bank[i].bcr =3D bcr & 0xFFDEE001; - if (enabled && (bcr & 1)) { - trace_ppc4xx_sdram_map(sdram_ddr_base(bcr), sdram_ddr_size(bcr)); - memory_region_init(&sdram->bank[i].container, NULL, "sdram-contain= er", - sdram_ddr_size(bcr)); - memory_region_add_subregion(&sdram->bank[i].container, 0, - &sdram->bank[i].ram); - memory_region_add_subregion(get_system_memory(), - sdram_ddr_base(bcr), - &sdram->bank[i].container); - } -} - -static void sdram_ddr_map_bcr(Ppc4xxSdramDdrState *sdram) -{ - int i; - - for (i =3D 0; i < sdram->nbanks; i++) { - if (sdram->bank[i].size !=3D 0) { - sdram_ddr_set_bcr(sdram, i, sdram_ddr_bcr(sdram->bank[i].base, - sdram->bank[i].size)= , 1); - } else { - sdram_ddr_set_bcr(sdram, i, 0, 0); - } - } -} - -static void sdram_ddr_unmap_bcr(Ppc4xxSdramDdrState *sdram) -{ - int i; - - for (i =3D 0; i < sdram->nbanks; i++) { - trace_ppc4xx_sdram_unmap(sdram_ddr_base(sdram->bank[i].bcr), - sdram_ddr_size(sdram->bank[i].bcr)); - memory_region_del_subregion(get_system_memory(), - &sdram->bank[i].ram); - } -} - -static uint32_t sdram_ddr_dcr_read(void *opaque, int dcrn) -{ - Ppc4xxSdramDdrState *sdram =3D opaque; - uint32_t ret; - - switch (dcrn) { - case SDRAM0_CFGADDR: - ret =3D sdram->addr; - break; - case SDRAM0_CFGDATA: - switch (sdram->addr) { - case 0x00: /* SDRAM_BESR0 */ - ret =3D sdram->besr0; - break; - case 0x08: /* SDRAM_BESR1 */ - ret =3D sdram->besr1; - break; - case 0x10: /* SDRAM_BEAR */ - ret =3D sdram->bear; - break; - case 0x20: /* SDRAM_CFG */ - ret =3D sdram->cfg; - break; - case 0x24: /* SDRAM_STATUS */ - ret =3D sdram->status; - break; - case 0x30: /* SDRAM_RTR */ - ret =3D sdram->rtr; - break; - case 0x34: /* SDRAM_PMIT */ - ret =3D sdram->pmit; - break; - case 0x40: /* SDRAM_B0CR */ - ret =3D sdram->bank[0].bcr; - break; - case 0x44: /* SDRAM_B1CR */ - ret =3D sdram->bank[1].bcr; - break; - case 0x48: /* SDRAM_B2CR */ - ret =3D sdram->bank[2].bcr; - break; - case 0x4C: /* SDRAM_B3CR */ - ret =3D sdram->bank[3].bcr; - break; - case 0x80: /* SDRAM_TR */ - ret =3D -1; /* ? */ - break; - case 0x94: /* SDRAM_ECCCFG */ - ret =3D sdram->ecccfg; - break; - case 0x98: /* SDRAM_ECCESR */ - ret =3D sdram->eccesr; - break; - default: /* Error */ - ret =3D -1; - break; - } - break; - default: - /* Avoid gcc warning */ - ret =3D 0; - break; - } - - return ret; -} - -static void sdram_ddr_dcr_write(void *opaque, int dcrn, uint32_t val) -{ - Ppc4xxSdramDdrState *sdram =3D opaque; - - switch (dcrn) { - case SDRAM0_CFGADDR: - sdram->addr =3D val; - break; - case SDRAM0_CFGDATA: - switch (sdram->addr) { - case 0x00: /* SDRAM_BESR0 */ - sdram->besr0 &=3D ~val; - break; - case 0x08: /* SDRAM_BESR1 */ - sdram->besr1 &=3D ~val; - break; - case 0x10: /* SDRAM_BEAR */ - sdram->bear =3D val; - break; - case 0x20: /* SDRAM_CFG */ - val &=3D 0xFFE00000; - if (!(sdram->cfg & 0x80000000) && (val & 0x80000000)) { - trace_ppc4xx_sdram_enable("enable"); - /* validate all RAM mappings */ - sdram_ddr_map_bcr(sdram); - sdram->status &=3D ~0x80000000; - } else if ((sdram->cfg & 0x80000000) && !(val & 0x80000000)) { - trace_ppc4xx_sdram_enable("disable"); - /* invalidate all RAM mappings */ - sdram_ddr_unmap_bcr(sdram); - sdram->status |=3D 0x80000000; - } - if (!(sdram->cfg & 0x40000000) && (val & 0x40000000)) { - sdram->status |=3D 0x40000000; - } else if ((sdram->cfg & 0x40000000) && !(val & 0x40000000)) { - sdram->status &=3D ~0x40000000; - } - sdram->cfg =3D val; - break; - case 0x24: /* SDRAM_STATUS */ - /* Read-only register */ - break; - case 0x30: /* SDRAM_RTR */ - sdram->rtr =3D val & 0x3FF80000; - break; - case 0x34: /* SDRAM_PMIT */ - sdram->pmit =3D (val & 0xF8000000) | 0x07C00000; - break; - case 0x40: /* SDRAM_B0CR */ - sdram_ddr_set_bcr(sdram, 0, val, sdram->cfg & 0x80000000); - break; - case 0x44: /* SDRAM_B1CR */ - sdram_ddr_set_bcr(sdram, 1, val, sdram->cfg & 0x80000000); - break; - case 0x48: /* SDRAM_B2CR */ - sdram_ddr_set_bcr(sdram, 2, val, sdram->cfg & 0x80000000); - break; - case 0x4C: /* SDRAM_B3CR */ - sdram_ddr_set_bcr(sdram, 3, val, sdram->cfg & 0x80000000); - break; - case 0x80: /* SDRAM_TR */ - sdram->tr =3D val & 0x018FC01F; - break; - case 0x94: /* SDRAM_ECCCFG */ - sdram->ecccfg =3D val & 0x00F00000; - break; - case 0x98: /* SDRAM_ECCESR */ - val &=3D 0xFFF0F000; - if (sdram->eccesr =3D=3D 0 && val !=3D 0) { - qemu_irq_raise(sdram->irq); - } else if (sdram->eccesr !=3D 0 && val =3D=3D 0) { - qemu_irq_lower(sdram->irq); - } - sdram->eccesr =3D val; - break; - default: /* Error */ - break; - } - break; - } -} - -static void ppc4xx_sdram_ddr_reset(DeviceState *dev) -{ - Ppc4xxSdramDdrState *sdram =3D PPC4xx_SDRAM_DDR(dev); - - sdram->addr =3D 0; - sdram->bear =3D 0; - sdram->besr0 =3D 0; /* No error */ - sdram->besr1 =3D 0; /* No error */ - sdram->cfg =3D 0; - sdram->ecccfg =3D 0; /* No ECC */ - sdram->eccesr =3D 0; /* No error */ - sdram->pmit =3D 0x07C00000; - sdram->rtr =3D 0x05F00000; - sdram->tr =3D 0x00854009; - /* We pre-initialize RAM banks */ - sdram->status =3D 0; - sdram->cfg =3D 0x00800000; -} - -static void ppc4xx_sdram_ddr_realize(DeviceState *dev, Error **errp) -{ - Ppc4xxSdramDdrState *s =3D PPC4xx_SDRAM_DDR(dev); - Ppc4xxDcrDeviceState *dcr =3D PPC4xx_DCR_DEVICE(dev); - const ram_addr_t valid_bank_sizes[] =3D { - 256 * MiB, 128 * MiB, 64 * MiB, 32 * MiB, 16 * MiB, 8 * MiB, 4 * M= iB, 0 - }; - - if (s->nbanks < 1 || s->nbanks > 4) { - error_setg(errp, "Invalid number of RAM banks"); - return; - } - if (!s->dram_mr) { - error_setg(errp, "Missing dram memory region"); - return; - } - ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, valid_bank_sizes); - - sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq); - - ppc4xx_dcr_register(dcr, SDRAM0_CFGADDR, - s, &sdram_ddr_dcr_read, &sdram_ddr_dcr_write); - ppc4xx_dcr_register(dcr, SDRAM0_CFGDATA, - s, &sdram_ddr_dcr_read, &sdram_ddr_dcr_write); -} - -static Property ppc4xx_sdram_ddr_props[] =3D { - DEFINE_PROP_LINK("dram", Ppc4xxSdramDdrState, dram_mr, TYPE_MEMORY_REG= ION, - MemoryRegion *), - DEFINE_PROP_UINT32("nbanks", Ppc4xxSdramDdrState, nbanks, 4), - DEFINE_PROP_END_OF_LIST(), -}; - -static void ppc4xx_sdram_ddr_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D ppc4xx_sdram_ddr_realize; - dc->reset =3D ppc4xx_sdram_ddr_reset; - /* Reason: only works as function of a ppc4xx SoC */ - dc->user_creatable =3D false; - device_class_set_props(dc, ppc4xx_sdram_ddr_props); -} - -void ppc4xx_sdram_ddr_enable(Ppc4xxSdramDdrState *s) -{ - sdram_ddr_dcr_write(s, SDRAM0_CFGADDR, 0x20); - sdram_ddr_dcr_write(s, SDRAM0_CFGDATA, 0x80000000); -} =20 /* * Split RAM between SDRAM banks. @@ -963,11 +616,6 @@ static void ppc4xx_dcr_class_init(ObjectClass *oc, voi= d *data) =20 static const TypeInfo ppc4xx_types[] =3D { { - .name =3D TYPE_PPC4xx_SDRAM_DDR, - .parent =3D TYPE_PPC4xx_DCR_DEVICE, - .instance_size =3D sizeof(Ppc4xxSdramDdrState), - .class_init =3D ppc4xx_sdram_ddr_class_init, - }, { .name =3D TYPE_PPC4xx_MAL, .parent =3D TYPE_PPC4xx_DCR_DEVICE, .instance_size =3D sizeof(Ppc4xxMalState), diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index b49a7ed60a..d88363bc3d 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -1,4 +1,27 @@ /* + * QEMU PowerPC 4xx embedded processors SDRAM controller emulation + * + * DDR SDRAM controller: + * Copyright (c) 2007 Jocelyn Mayer + * + * 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 + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + * * DDR2 SDRAM controller: * Copyright (c) 2012 Fran=C3=A7ois Revol * Copyright (c) 2016-2019 BALATON Zoltan @@ -9,7 +32,9 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include "qapi/error.h" +#include "qemu/log.h" #include "exec/address-spaces.h" /* get_system_memory() */ +#include "exec/cpu-defs.h" /* target_ulong */ #include "hw/irq.h" #include "hw/qdev-properties.h" #include "hw/ppc/ppc4xx.h" @@ -38,6 +63,341 @@ enum { SDRAM0_CFGDATA =3D 0x011, }; =20 +/*************************************************************************= ****/ +/* DDR SDRAM controller */ +/* + * XXX: TOFIX: some patches have made this code become inconsistent: + * there are type inconsistencies, mixing hwaddr, target_ulong + * and uint32_t + */ +static uint32_t sdram_ddr_bcr(hwaddr ram_base, hwaddr ram_size) +{ + uint32_t bcr; + + switch (ram_size) { + case 4 * MiB: + bcr =3D 0; + break; + case 8 * MiB: + bcr =3D 0x20000; + break; + case 16 * MiB: + bcr =3D 0x40000; + break; + case 32 * MiB: + bcr =3D 0x60000; + break; + case 64 * MiB: + bcr =3D 0x80000; + break; + case 128 * MiB: + bcr =3D 0xA0000; + break; + case 256 * MiB: + bcr =3D 0xC0000; + break; + default: + qemu_log_mask(LOG_GUEST_ERROR, + "%s: invalid RAM size 0x%" HWADDR_PRIx "\n", __func_= _, + ram_size); + return 0; + } + bcr |=3D ram_base & 0xFF800000; + bcr |=3D 1; + + return bcr; +} + +static inline hwaddr sdram_ddr_base(uint32_t bcr) +{ + return bcr & 0xFF800000; +} + +static target_ulong sdram_ddr_size(uint32_t bcr) +{ + target_ulong size; + int sh; + + sh =3D (bcr >> 17) & 0x7; + if (sh =3D=3D 7) { + size =3D -1; + } else { + size =3D (4 * MiB) << sh; + } + + return size; +} + +static void sdram_ddr_set_bcr(Ppc4xxSdramDdrState *sdram, int i, + uint32_t bcr, int enabled) +{ + if (sdram->bank[i].bcr & 1) { + /* Unmap RAM */ + trace_ppc4xx_sdram_unmap(sdram_ddr_base(sdram->bank[i].bcr), + sdram_ddr_size(sdram->bank[i].bcr)); + memory_region_del_subregion(get_system_memory(), + &sdram->bank[i].container); + memory_region_del_subregion(&sdram->bank[i].container, + &sdram->bank[i].ram); + object_unparent(OBJECT(&sdram->bank[i].container)); + } + sdram->bank[i].bcr =3D bcr & 0xFFDEE001; + if (enabled && (bcr & 1)) { + trace_ppc4xx_sdram_map(sdram_ddr_base(bcr), sdram_ddr_size(bcr)); + memory_region_init(&sdram->bank[i].container, NULL, "sdram-contain= er", + sdram_ddr_size(bcr)); + memory_region_add_subregion(&sdram->bank[i].container, 0, + &sdram->bank[i].ram); + memory_region_add_subregion(get_system_memory(), + sdram_ddr_base(bcr), + &sdram->bank[i].container); + } +} + +static void sdram_ddr_map_bcr(Ppc4xxSdramDdrState *sdram) +{ + int i; + + for (i =3D 0; i < sdram->nbanks; i++) { + if (sdram->bank[i].size !=3D 0) { + sdram_ddr_set_bcr(sdram, i, sdram_ddr_bcr(sdram->bank[i].base, + sdram->bank[i].size)= , 1); + } else { + sdram_ddr_set_bcr(sdram, i, 0, 0); + } + } +} + +static void sdram_ddr_unmap_bcr(Ppc4xxSdramDdrState *sdram) +{ + int i; + + for (i =3D 0; i < sdram->nbanks; i++) { + trace_ppc4xx_sdram_unmap(sdram_ddr_base(sdram->bank[i].bcr), + sdram_ddr_size(sdram->bank[i].bcr)); + memory_region_del_subregion(get_system_memory(), + &sdram->bank[i].ram); + } +} + +static uint32_t sdram_ddr_dcr_read(void *opaque, int dcrn) +{ + Ppc4xxSdramDdrState *sdram =3D opaque; + uint32_t ret; + + switch (dcrn) { + case SDRAM0_CFGADDR: + ret =3D sdram->addr; + break; + case SDRAM0_CFGDATA: + switch (sdram->addr) { + case 0x00: /* SDRAM_BESR0 */ + ret =3D sdram->besr0; + break; + case 0x08: /* SDRAM_BESR1 */ + ret =3D sdram->besr1; + break; + case 0x10: /* SDRAM_BEAR */ + ret =3D sdram->bear; + break; + case 0x20: /* SDRAM_CFG */ + ret =3D sdram->cfg; + break; + case 0x24: /* SDRAM_STATUS */ + ret =3D sdram->status; + break; + case 0x30: /* SDRAM_RTR */ + ret =3D sdram->rtr; + break; + case 0x34: /* SDRAM_PMIT */ + ret =3D sdram->pmit; + break; + case 0x40: /* SDRAM_B0CR */ + ret =3D sdram->bank[0].bcr; + break; + case 0x44: /* SDRAM_B1CR */ + ret =3D sdram->bank[1].bcr; + break; + case 0x48: /* SDRAM_B2CR */ + ret =3D sdram->bank[2].bcr; + break; + case 0x4C: /* SDRAM_B3CR */ + ret =3D sdram->bank[3].bcr; + break; + case 0x80: /* SDRAM_TR */ + ret =3D -1; /* ? */ + break; + case 0x94: /* SDRAM_ECCCFG */ + ret =3D sdram->ecccfg; + break; + case 0x98: /* SDRAM_ECCESR */ + ret =3D sdram->eccesr; + break; + default: /* Error */ + ret =3D -1; + break; + } + break; + default: + /* Avoid gcc warning */ + ret =3D 0; + break; + } + + return ret; +} + +static void sdram_ddr_dcr_write(void *opaque, int dcrn, uint32_t val) +{ + Ppc4xxSdramDdrState *sdram =3D opaque; + + switch (dcrn) { + case SDRAM0_CFGADDR: + sdram->addr =3D val; + break; + case SDRAM0_CFGDATA: + switch (sdram->addr) { + case 0x00: /* SDRAM_BESR0 */ + sdram->besr0 &=3D ~val; + break; + case 0x08: /* SDRAM_BESR1 */ + sdram->besr1 &=3D ~val; + break; + case 0x10: /* SDRAM_BEAR */ + sdram->bear =3D val; + break; + case 0x20: /* SDRAM_CFG */ + val &=3D 0xFFE00000; + if (!(sdram->cfg & 0x80000000) && (val & 0x80000000)) { + trace_ppc4xx_sdram_enable("enable"); + /* validate all RAM mappings */ + sdram_ddr_map_bcr(sdram); + sdram->status &=3D ~0x80000000; + } else if ((sdram->cfg & 0x80000000) && !(val & 0x80000000)) { + trace_ppc4xx_sdram_enable("disable"); + /* invalidate all RAM mappings */ + sdram_ddr_unmap_bcr(sdram); + sdram->status |=3D 0x80000000; + } + if (!(sdram->cfg & 0x40000000) && (val & 0x40000000)) { + sdram->status |=3D 0x40000000; + } else if ((sdram->cfg & 0x40000000) && !(val & 0x40000000)) { + sdram->status &=3D ~0x40000000; + } + sdram->cfg =3D val; + break; + case 0x24: /* SDRAM_STATUS */ + /* Read-only register */ + break; + case 0x30: /* SDRAM_RTR */ + sdram->rtr =3D val & 0x3FF80000; + break; + case 0x34: /* SDRAM_PMIT */ + sdram->pmit =3D (val & 0xF8000000) | 0x07C00000; + break; + case 0x40: /* SDRAM_B0CR */ + sdram_ddr_set_bcr(sdram, 0, val, sdram->cfg & 0x80000000); + break; + case 0x44: /* SDRAM_B1CR */ + sdram_ddr_set_bcr(sdram, 1, val, sdram->cfg & 0x80000000); + break; + case 0x48: /* SDRAM_B2CR */ + sdram_ddr_set_bcr(sdram, 2, val, sdram->cfg & 0x80000000); + break; + case 0x4C: /* SDRAM_B3CR */ + sdram_ddr_set_bcr(sdram, 3, val, sdram->cfg & 0x80000000); + break; + case 0x80: /* SDRAM_TR */ + sdram->tr =3D val & 0x018FC01F; + break; + case 0x94: /* SDRAM_ECCCFG */ + sdram->ecccfg =3D val & 0x00F00000; + break; + case 0x98: /* SDRAM_ECCESR */ + val &=3D 0xFFF0F000; + if (sdram->eccesr =3D=3D 0 && val !=3D 0) { + qemu_irq_raise(sdram->irq); + } else if (sdram->eccesr !=3D 0 && val =3D=3D 0) { + qemu_irq_lower(sdram->irq); + } + sdram->eccesr =3D val; + break; + default: /* Error */ + break; + } + break; + } +} + +static void ppc4xx_sdram_ddr_reset(DeviceState *dev) +{ + Ppc4xxSdramDdrState *sdram =3D PPC4xx_SDRAM_DDR(dev); + + sdram->addr =3D 0; + sdram->bear =3D 0; + sdram->besr0 =3D 0; /* No error */ + sdram->besr1 =3D 0; /* No error */ + sdram->cfg =3D 0; + sdram->ecccfg =3D 0; /* No ECC */ + sdram->eccesr =3D 0; /* No error */ + sdram->pmit =3D 0x07C00000; + sdram->rtr =3D 0x05F00000; + sdram->tr =3D 0x00854009; + /* We pre-initialize RAM banks */ + sdram->status =3D 0; + sdram->cfg =3D 0x00800000; +} + +static void ppc4xx_sdram_ddr_realize(DeviceState *dev, Error **errp) +{ + Ppc4xxSdramDdrState *s =3D PPC4xx_SDRAM_DDR(dev); + Ppc4xxDcrDeviceState *dcr =3D PPC4xx_DCR_DEVICE(dev); + const ram_addr_t valid_bank_sizes[] =3D { + 256 * MiB, 128 * MiB, 64 * MiB, 32 * MiB, 16 * MiB, 8 * MiB, 4 * M= iB, 0 + }; + + if (s->nbanks < 1 || s->nbanks > 4) { + error_setg(errp, "Invalid number of RAM banks"); + return; + } + if (!s->dram_mr) { + error_setg(errp, "Missing dram memory region"); + return; + } + ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, valid_bank_sizes); + + sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq); + + ppc4xx_dcr_register(dcr, SDRAM0_CFGADDR, + s, &sdram_ddr_dcr_read, &sdram_ddr_dcr_write); + ppc4xx_dcr_register(dcr, SDRAM0_CFGDATA, + s, &sdram_ddr_dcr_read, &sdram_ddr_dcr_write); +} + +static Property ppc4xx_sdram_ddr_props[] =3D { + DEFINE_PROP_LINK("dram", Ppc4xxSdramDdrState, dram_mr, TYPE_MEMORY_REG= ION, + MemoryRegion *), + DEFINE_PROP_UINT32("nbanks", Ppc4xxSdramDdrState, nbanks, 4), + DEFINE_PROP_END_OF_LIST(), +}; + +static void ppc4xx_sdram_ddr_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + + dc->realize =3D ppc4xx_sdram_ddr_realize; + dc->reset =3D ppc4xx_sdram_ddr_reset; + /* Reason: only works as function of a ppc4xx SoC */ + dc->user_creatable =3D false; + device_class_set_props(dc, ppc4xx_sdram_ddr_props); +} + +void ppc4xx_sdram_ddr_enable(Ppc4xxSdramDdrState *s) +{ + sdram_ddr_dcr_write(s, SDRAM0_CFGADDR, 0x20); + sdram_ddr_dcr_write(s, SDRAM0_CFGDATA, 0x80000000); +} + /*************************************************************************= ****/ /* DDR2 SDRAM controller */ enum { @@ -338,6 +698,11 @@ void ppc4xx_sdram_ddr2_enable(Ppc4xxSdramDdr2State *s) =20 static const TypeInfo ppc4xx_sdram_types[] =3D { { + .name =3D TYPE_PPC4xx_SDRAM_DDR, + .parent =3D TYPE_PPC4xx_DCR_DEVICE, + .instance_size =3D sizeof(Ppc4xxSdramDdrState), + .class_init =3D ppc4xx_sdram_ddr_class_init, + }, { .name =3D TYPE_PPC4xx_SDRAM_DDR2, .parent =3D TYPE_PPC4xx_DCR_DEVICE, .instance_size =3D sizeof(Ppc4xxSdramDdr2State), --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975501; cv=none; d=zohomail.com; s=zohoarc; b=ElbK3PggOKZALbCs1ameX5Pa0HevTL8U7i4kh8Zxq1/ctRoKshDvXQ0slV0C7v/wzSx+uPQ0jvE6ego0uln0gVnV39R/dzh0iTMK5EVXW1ZBwC0WcSc5FS2cPMWTws3GanoX8AizLBwLDZZTnFCqXgopZNgmDl+Qp89124fQWEg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975501; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=evlax0p3TcYJJqvjtjF1ip1im+iTgPSrlTOpG4sIak4=; b=OMsyv24BWMqeCcWXBHkpd6w+Gh9zOVhFHxolZ9lQSJIf+KUj0PfR/FJWXhuTh8rI7It/lZzxL9GPpNA3xopkO/7T2kf1S0N6Q8KEC6r6l3RCgPZsFhujAXW0AV8PDzV9Wj/R1d7s28cIwPch73CmI60YaAWUf4m/t7AYWmuTXII= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975501708538.4914349003062; Fri, 28 Oct 2022 09:45:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSp-0002bT-Ia; Fri, 28 Oct 2022 12:44:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSO-0006FY-Uh; Fri, 28 Oct 2022 12:43:48 -0400 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSN-0000tc-5X; Fri, 28 Oct 2022 12:43:44 -0400 Received: by mail-ot1-x32d.google.com with SMTP id cb2-20020a056830618200b00661b6e5dcd8so3272688otb.8; Fri, 28 Oct 2022 09:43:42 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=evlax0p3TcYJJqvjtjF1ip1im+iTgPSrlTOpG4sIak4=; b=DdFQ2Cpj+TR2CTt/B1uBoiRWlX3DR2lj57QWY3cot/Bv/+Doz+KilU5BXXg1FXx6cI 21E3vjD2/9fiqZacYL8tVkTEuDdtEL/2xi04zXclXBFCt6iLyFgtsHlyC23ER981ZUhN mBwyv1OO8AhaoOVi1oZnh35ZE0qJM0lLsXCyhNtLUugiWNait4zmLom4ynwEoihWIdtc chR5lcSJQTAYVIlOBSq1wrMJBHKBxxe//cLigJMmROA9A8XOWn2z2AVSGzMcNyKqcECo EoG09/P799Vq7xuwMUrTbZUPdQWcHd9mTuSULIKDqwy9WxND1uRC+WZe95IZVArb8wS2 9WfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=evlax0p3TcYJJqvjtjF1ip1im+iTgPSrlTOpG4sIak4=; b=Ixku0MbYNVT2m3OriUvkDTVIRZ4nWOVRIKIkX/UAYPjViLW1UqBbCcpTpXLNzj+6M/ Yq/vQNDYIE69SM/KF7h9PiBftI36fGiUeVb44mkWLI9PwtqidFQPuGlT8dgKG921WSIh CEf3xRrdMahe2QrP2fiSkRnqG/sWZjgfILV82t+WHt8/lCpY62n/mPVNu5S3Dn1ENSvp VGrIIE2IecMgWeFg/oOkpx//QbzFaDd2AvA0vYLH813sOzhmpx9617l6R6854+VzBEod w4sDsMsRMB/IGnwuou9ibtGZqWhj2m3IUZT7AEm0l4kG2aKdIsd9IJ3/vOrPw+24ukha 5FuQ== X-Gm-Message-State: ACrzQf3yYojLIyILZZL1ElJfivShWMAaKAUUbf5bLayIY7s2JQohk+0f NFT4WhAwudwmOtgw927IeW1EKkIwvVLk5A== X-Google-Smtp-Source: AMsMyM75BLmZT0eLkrby7HxCQ7lVBCgaMEvRz39tEOVuVsot2Vel2pIXcP3TPwnMoqKFNZym7EHtSw== X-Received: by 2002:a05:6830:148a:b0:661:94cb:32b1 with SMTP id s10-20020a056830148a00b0066194cb32b1mr125078otq.174.1666975420986; Fri, 28 Oct 2022 09:43:40 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, BALATON Zoltan , Daniel Henrique Barboza Subject: [PULL 50/62] ppc4xx_sdram: Move ppc4xx_sdram_banks() to ppc4xx_sdram.c Date: Fri, 28 Oct 2022 13:39:39 -0300 Message-Id: <20221028163951.810456-51-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::32d; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x32d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975502277100001 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan This function is only used by the ppc4xx memory controller models so it can be made static. Signed-off-by: BALATON Zoltan Reviewed-by: Daniel Henrique Barboza Message-Id: Signed-off-by: Daniel Henrique Barboza --- hw/ppc/ppc4xx_devs.c | 62 ----------------------------------------- hw/ppc/ppc4xx_sdram.c | 61 ++++++++++++++++++++++++++++++++++++++++ include/hw/ppc/ppc4xx.h | 20 ++++++------- 3 files changed, 69 insertions(+), 74 deletions(-) diff --git a/hw/ppc/ppc4xx_devs.c b/hw/ppc/ppc4xx_devs.c index f737dbb3d6..c1d111465d 100644 --- a/hw/ppc/ppc4xx_devs.c +++ b/hw/ppc/ppc4xx_devs.c @@ -23,73 +23,11 @@ */ =20 #include "qemu/osdep.h" -#include "qemu/units.h" #include "cpu.h" #include "hw/ppc/ppc4xx.h" #include "hw/qdev-properties.h" #include "qapi/error.h" =20 -/* - * Split RAM between SDRAM banks. - * - * sdram_bank_sizes[] must be in descending order, that is sizes[i] > size= s[i+1] - * and must be 0-terminated. - * - * The 4xx SDRAM controller supports a small number of banks, and each bank - * must be one of a small set of sizes. The number of banks and the suppor= ted - * sizes varies by SoC. - */ -void ppc4xx_sdram_banks(MemoryRegion *ram, int nr_banks, - Ppc4xxSdramBank ram_banks[], - const ram_addr_t sdram_bank_sizes[]) -{ - ram_addr_t size_left =3D memory_region_size(ram); - ram_addr_t base =3D 0; - ram_addr_t bank_size; - int i; - int j; - - for (i =3D 0; i < nr_banks; i++) { - for (j =3D 0; sdram_bank_sizes[j] !=3D 0; j++) { - bank_size =3D sdram_bank_sizes[j]; - if (bank_size <=3D size_left) { - char name[32]; - - ram_banks[i].base =3D base; - ram_banks[i].size =3D bank_size; - base +=3D bank_size; - size_left -=3D bank_size; - snprintf(name, sizeof(name), "ppc4xx.sdram%d", i); - memory_region_init_alias(&ram_banks[i].ram, NULL, name, ra= m, - ram_banks[i].base, ram_banks[i].s= ize); - break; - } - } - if (!size_left) { - /* No need to use the remaining banks. */ - break; - } - } - - if (size_left) { - ram_addr_t used_size =3D memory_region_size(ram) - size_left; - GString *s =3D g_string_new(NULL); - - for (i =3D 0; sdram_bank_sizes[i]; i++) { - g_string_append_printf(s, "%" PRIi64 "%s", - sdram_bank_sizes[i] / MiB, - sdram_bank_sizes[i + 1] ? ", " : ""); - } - error_report("at most %d bank%s of %s MiB each supported", - nr_banks, nr_banks =3D=3D 1 ? "" : "s", s->str); - error_printf("Possible valid RAM size: %" PRIi64 " MiB\n", - used_size ? used_size / MiB : sdram_bank_sizes[i - 1] / MiB); - - g_string_free(s, true); - exit(EXIT_FAILURE); - } -} - /*************************************************************************= ****/ /* MAL */ =20 diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index d88363bc3d..62ef7d8f0d 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -43,6 +43,67 @@ /*************************************************************************= ****/ /* Shared functions */ =20 +/* + * Split RAM between SDRAM banks. + * + * sdram_bank_sizes[] must be in descending order, that is sizes[i] > size= s[i+1] + * and must be 0-terminated. + * + * The 4xx SDRAM controller supports a small number of banks, and each bank + * must be one of a small set of sizes. The number of banks and the suppor= ted + * sizes varies by SoC. + */ +static void ppc4xx_sdram_banks(MemoryRegion *ram, int nr_banks, + Ppc4xxSdramBank ram_banks[], + const ram_addr_t sdram_bank_sizes[]) +{ + ram_addr_t size_left =3D memory_region_size(ram); + ram_addr_t base =3D 0; + ram_addr_t bank_size; + int i; + int j; + + for (i =3D 0; i < nr_banks; i++) { + for (j =3D 0; sdram_bank_sizes[j] !=3D 0; j++) { + bank_size =3D sdram_bank_sizes[j]; + if (bank_size <=3D size_left) { + char name[32]; + + ram_banks[i].base =3D base; + ram_banks[i].size =3D bank_size; + base +=3D bank_size; + size_left -=3D bank_size; + snprintf(name, sizeof(name), "ppc4xx.sdram%d", i); + memory_region_init_alias(&ram_banks[i].ram, NULL, name, ra= m, + ram_banks[i].base, ram_banks[i].s= ize); + break; + } + } + if (!size_left) { + /* No need to use the remaining banks. */ + break; + } + } + + if (size_left) { + ram_addr_t used_size =3D memory_region_size(ram) - size_left; + GString *s =3D g_string_new(NULL); + + for (i =3D 0; sdram_bank_sizes[i]; i++) { + g_string_append_printf(s, "%" PRIi64 "%s", + sdram_bank_sizes[i] / MiB, + sdram_bank_sizes[i + 1] ? ", " : ""); + } + error_report("at most %d bank%s of %s MiB each supported", + nr_banks, nr_banks =3D=3D 1 ? "" : "s", s->str); + error_printf("Possible valid RAM size: %" PRIi64 " MiB\n", + used_size ? used_size / MiB : sdram_bank_sizes[i - 1] / MiB); + + g_string_free(s, true); + exit(EXIT_FAILURE); + } +} + static void sdram_bank_map(Ppc4xxSdramBank *bank) { memory_region_init(&bank->container, NULL, "sdram-container", bank->si= ze); diff --git a/include/hw/ppc/ppc4xx.h b/include/hw/ppc/ppc4xx.h index 10c6dd535f..f8c86e09ec 100644 --- a/include/hw/ppc/ppc4xx.h +++ b/include/hw/ppc/ppc4xx.h @@ -29,18 +29,6 @@ #include "exec/memory.h" #include "hw/sysbus.h" =20 -typedef struct { - MemoryRegion ram; - MemoryRegion container; /* used for clipping */ - hwaddr base; - hwaddr size; - uint32_t bcr; -} Ppc4xxSdramBank; - -void ppc4xx_sdram_banks(MemoryRegion *ram, int nr_banks, - Ppc4xxSdramBank ram_banks[], - const ram_addr_t sdram_bank_sizes[]); - #define TYPE_PPC4xx_PCI_HOST_BRIDGE "ppc4xx-pcihost" =20 /* @@ -111,6 +99,14 @@ struct Ppc4xxEbcState { }; =20 /* SDRAM DDR controller */ +typedef struct { + MemoryRegion ram; + MemoryRegion container; /* used for clipping */ + hwaddr base; + hwaddr size; + uint32_t bcr; +} Ppc4xxSdramBank; + #define SDR0_DDR0_DDRM_ENCODE(n) ((((unsigned long)(n)) & 0x03) << 29) #define SDR0_DDR0_DDRM_DDR1 0x20000000 #define SDR0_DDR0_DDRM_DDR2 0x40000000 --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975600; cv=none; d=zohomail.com; s=zohoarc; b=hFJU/khIwcCKOY4VseoVQfY60WVukFEgO1nUYsq84jSRTTMiUa/wiFb1XcSqOx0rvN7fU91o7QJ4CBRFt0oP+/5M7paCOBUVFcnfvocVLBGwvbz7PDi3FjwdgiAi1+q9KnbD5ui17zmqWbVFf0NsiYcB/LYtU7RqcvmfsQPGQjk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975600; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8Ld3bktmNMzyCf3dZm5iJ5Yo9T6ZCyv9EWO8lFJTyoU=; b=kexWk41kKZn8lgiuFORXVtnS2Yfg21LnEmdRUj6nFgdKAXCw12xmSP8t663HHEhu9GoI83WExEXxrBxIdke6qsyMGCAiDqa0qt1Xvz+3siF4xSjQtehFTVU4cW6jarBvpz46obJrru4DCajE1J5Q421rGVKMspOME6OjVUP4wGk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975600705717.8988061646985; Fri, 28 Oct 2022 09:46:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSz-0004J8-GN; Fri, 28 Oct 2022 12:44:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSY-0007Tp-Ns; Fri, 28 Oct 2022 12:43:54 -0400 Received: from mail-oa1-x2d.google.com ([2001:4860:4864:20::2d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSQ-0000uf-Ti; Fri, 28 Oct 2022 12:43:54 -0400 Received: by mail-oa1-x2d.google.com with SMTP id 586e51a60fabf-13c2cfd1126so6866850fac.10; Fri, 28 Oct 2022 09:43:46 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8Ld3bktmNMzyCf3dZm5iJ5Yo9T6ZCyv9EWO8lFJTyoU=; b=aFndxckVjnCAUlRsM8lBZXau4EE8eKjvi3PZVgc8IRQOpJQ2Oq1biVYkEHBhgTPxFC +yUwO7jK0M+iBxz3bgBvlzAX8uZCUbCF6EGI8KPsazVXVC5L1j8rPn0QACURoatlMd7W N5p9aiB6ZejupWkAwmVhZVMixOUoEzy2AkmBzH7DA86GfviskY2snKodC5B+6ojnyASb eLnReGd08zWjRxKPvBK/4khg5vjiuQ9H8gMM6Bwh4UAXjEueXNd18t+bqtiPIlsWKo7I tUnxTXaTz1gKnA2lw10aAPG5aQ9tYgtJhvrn/i2YF+am85SStFIKt50plKa11yDRpclF B6+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8Ld3bktmNMzyCf3dZm5iJ5Yo9T6ZCyv9EWO8lFJTyoU=; b=lUI3Zb0yVMykDXicwIxHIc7ByPkNW9K2CAcvtyfuir9EgWPOnS1rYf7kihpDqJT3Sn eZNm0SbpBGAnlRuoYFwp1Ikam135UmzBpO2EWUWPS3CYO1eMFjqrR5n/QO0iQ//BjxaR YMpdI+Ofy3eeMR2n3u16Qoz2i7XiX1P/jaNyUBTGZftkkfzCPdXZOAAwDhMB+mlyeveA kfqRPdc74DFsp9xtoiXDDJ49LLxV0d7eidOiff1To7PMB+41/U0zdqbMiXilWxQzhnGF n/shLiQa+8THkjg3a0NL+XTxkYi4g2tXBdIQz4I/Z+li7G96MTZLt1WDoivw8NWrDUuq 5ndg== X-Gm-Message-State: ACrzQf2tvacEjwL+IXZG7qdsm6MyUmHUpc2GpU8TC6LLhWFOqkl+eUbm q6cu92LqikfwpheKtbSzZHiuChr7XDBNaw== X-Google-Smtp-Source: AMsMyM7TtylJmnJC9l9qa1fGh1AZf8UAcXVUO5YiZD4LnHoNtk3B83Z3J7FCLVC2fzOckKDziKp6rw== X-Received: by 2002:a05:6870:890b:b0:132:fa8c:1a00 with SMTP id i11-20020a056870890b00b00132fa8c1a00mr9824307oao.26.1666975425123; Fri, 28 Oct 2022 09:43:45 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, BALATON Zoltan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Daniel Henrique Barboza Subject: [PULL 51/62] ppc4xx_sdram: Use hwaddr for memory bank size Date: Fri, 28 Oct 2022 13:39:40 -0300 Message-Id: <20221028163951.810456-52-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2d; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975602656100001 From: BALATON Zoltan This resolves the target_ulong dependency that's clearly wrong and was also noted in a fixme comment. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <92fdc5f9cc76bf45831428b3ec8d9fc6241b7190.1666194485.git.balato= n@eik.bme.hu> Signed-off-by: Daniel Henrique Barboza --- hw/ppc/ppc4xx_sdram.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index 62ef7d8f0d..2294747594 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -34,7 +34,6 @@ #include "qapi/error.h" #include "qemu/log.h" #include "exec/address-spaces.h" /* get_system_memory() */ -#include "exec/cpu-defs.h" /* target_ulong */ #include "hw/irq.h" #include "hw/qdev-properties.h" #include "hw/ppc/ppc4xx.h" @@ -126,11 +125,6 @@ enum { =20 /*************************************************************************= ****/ /* DDR SDRAM controller */ -/* - * XXX: TOFIX: some patches have made this code become inconsistent: - * there are type inconsistencies, mixing hwaddr, target_ulong - * and uint32_t - */ static uint32_t sdram_ddr_bcr(hwaddr ram_base, hwaddr ram_size) { uint32_t bcr; @@ -174,9 +168,9 @@ static inline hwaddr sdram_ddr_base(uint32_t bcr) return bcr & 0xFF800000; } =20 -static target_ulong sdram_ddr_size(uint32_t bcr) +static hwaddr sdram_ddr_size(uint32_t bcr) { - target_ulong size; + hwaddr size; int sh; =20 sh =3D (bcr >> 17) & 0x7; @@ -523,9 +517,9 @@ static inline hwaddr sdram_ddr2_base(uint32_t bcr) return (bcr & 0xffe00000) << 2; } =20 -static uint64_t sdram_ddr2_size(uint32_t bcr) +static hwaddr sdram_ddr2_size(uint32_t bcr) { - uint64_t size; + hwaddr size; int sh; =20 sh =3D 1024 - ((bcr >> 6) & 0x3ff); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975726; cv=none; d=zohomail.com; s=zohoarc; b=KW08qyGS0NS9fAsizdEX39puXwFQLNGiVMa59EVfIUlfaNdIn87RSUiRPdPTjVTU1PIvR7SkapHi1dwkU2FpRzndTx3JqI/Z0sy3uAxDJK40L+J3+YSLdEB/dF9BqWkZxHDWdU6XimmvScwj52JrP7OyiisL3fmkN1SUo23niYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975726; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+tVHkUHUdbcyE88dZpx/gc6JwLxstTDXgSseeMmFKdM=; b=MGVxepvUWkRS1VgqKpG31hWohKnG7TG0VPfM4AlUg6Xt7/ZenhO5ma6/AVMkg8xJBgi1SqCgtmBlRL63vAqw+iYknXtzBPQE5B8GKU9LKhcMpbwCXRHBDZRg4typgZqKrHdnKTw/79IcABLlzT1T9jTs+CYJrDAhezk48zTTKPU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16669757264621002.2712099810676; Fri, 28 Oct 2022 09:48:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSSs-0003Ij-Cw; Fri, 28 Oct 2022 12:44:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSX-0007Kt-F5; Fri, 28 Oct 2022 12:43:54 -0400 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSV-0000vv-Dn; Fri, 28 Oct 2022 12:43:53 -0400 Received: by mail-ot1-x336.google.com with SMTP id br15-20020a056830390f00b0061c9d73b8bdso3282246otb.6; Fri, 28 Oct 2022 09:43:50 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+tVHkUHUdbcyE88dZpx/gc6JwLxstTDXgSseeMmFKdM=; b=i+Vxu/z3r66gwhUFmO9e8/9nHuEc3sYmiYWrDATJDIWz0Mp/WOO8syNPY6s9I4zmq8 YouowmrZFyiL6qxGpL+LbiSvo9uf5wQmY0NQMO6AFS9MFzzHGC1Z7qD7W7vxlprdtERh mL15DOODB1910bRG7VMqqWufN15ZmkJ4p1xFrimCxigdCWY9X9thEMgDS2JODx/d8lTZ GSNiP/OPNRj2fBMvuGeA4i7u+BpbWXyYhtiTiPFbtRF82iCXh3O/lSTjIjwjBVjY14VZ zLIqZ2snc5RogGAltXrE1pXgU8RVRjmcxE9QDdtCz5O4Nuw0E9kPfdLnpg0qxQtgawJ5 FwEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+tVHkUHUdbcyE88dZpx/gc6JwLxstTDXgSseeMmFKdM=; b=gz1TU4AtZ2FneIzPm6Ekr1iq+sdYep6KurGnr2M7/7h/xlHZpVhAhgNwa5qTgisCee bk4Os05KeTBh3l3yqnVPtJHzCfRYxLhFvJ+N3lSmoKq0sltc3TfNLgTjKrr1+SoO1BUS vxd28uTAvitIDIkROQXpBp4kAwViYPQ4nDY2IBVqgOL0YtqZ0MpaiuL2/5lv3DiMokoW n7U6tT/7C8bvQQoe33IjYFyreAckKvPe07dvacrW/ahJJeaH5Siba/lsiCLFWHE+X8v0 YUWf0dPzTDqnsOD4wXAK6g6of5eDjowf5174xG6Rua7iLdBRvEScYdOIQbG0zPyW5ZxL LQ1Q== X-Gm-Message-State: ACrzQf2YCCsbEttHl5SUd1AFd0+WWMxbJErIjjUXMBoct6Lkn640LFNn Kh+H0nWazgnDV2TJIZWR59COuzyfH1kHiA== X-Google-Smtp-Source: AMsMyM7xux1zQ8JFwZ8H7kat4paKa7ohCuFl3DC1xEVcIAGoERKcLsvaot3Jx0orQ7bRDxCNc20m/Q== X-Received: by 2002:a05:6830:33cc:b0:657:78bf:485d with SMTP id q12-20020a05683033cc00b0065778bf485dmr129784ott.76.1666975429608; Fri, 28 Oct 2022 09:43:49 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, BALATON Zoltan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Daniel Henrique Barboza Subject: [PULL 52/62] ppc4xx_sdram: Rename local state variable for brevity Date: Fri, 28 Oct 2022 13:39:41 -0300 Message-Id: <20221028163951.810456-53-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::336; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x336.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975727313100001 From: BALATON Zoltan Rename the sdram local state variable to s in dcr read/write functions and reset methods for better readability and to match realize methods. Other places not converted will be changed or removed in subsequent patches. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <8e7539cb1fccd7556b68351c4dcf62534c3a69cf.1666194485.git.balato= n@eik.bme.hu> Signed-off-by: Daniel Henrique Barboza --- hw/ppc/ppc4xx_sdram.c | 158 +++++++++++++++++++++--------------------- 1 file changed, 79 insertions(+), 79 deletions(-) diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index 2294747594..4bc53c8f01 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -237,56 +237,56 @@ static void sdram_ddr_unmap_bcr(Ppc4xxSdramDdrState *= sdram) =20 static uint32_t sdram_ddr_dcr_read(void *opaque, int dcrn) { - Ppc4xxSdramDdrState *sdram =3D opaque; + Ppc4xxSdramDdrState *s =3D opaque; uint32_t ret; =20 switch (dcrn) { case SDRAM0_CFGADDR: - ret =3D sdram->addr; + ret =3D s->addr; break; case SDRAM0_CFGDATA: - switch (sdram->addr) { + switch (s->addr) { case 0x00: /* SDRAM_BESR0 */ - ret =3D sdram->besr0; + ret =3D s->besr0; break; case 0x08: /* SDRAM_BESR1 */ - ret =3D sdram->besr1; + ret =3D s->besr1; break; case 0x10: /* SDRAM_BEAR */ - ret =3D sdram->bear; + ret =3D s->bear; break; case 0x20: /* SDRAM_CFG */ - ret =3D sdram->cfg; + ret =3D s->cfg; break; case 0x24: /* SDRAM_STATUS */ - ret =3D sdram->status; + ret =3D s->status; break; case 0x30: /* SDRAM_RTR */ - ret =3D sdram->rtr; + ret =3D s->rtr; break; case 0x34: /* SDRAM_PMIT */ - ret =3D sdram->pmit; + ret =3D s->pmit; break; case 0x40: /* SDRAM_B0CR */ - ret =3D sdram->bank[0].bcr; + ret =3D s->bank[0].bcr; break; case 0x44: /* SDRAM_B1CR */ - ret =3D sdram->bank[1].bcr; + ret =3D s->bank[1].bcr; break; case 0x48: /* SDRAM_B2CR */ - ret =3D sdram->bank[2].bcr; + ret =3D s->bank[2].bcr; break; case 0x4C: /* SDRAM_B3CR */ - ret =3D sdram->bank[3].bcr; + ret =3D s->bank[3].bcr; break; case 0x80: /* SDRAM_TR */ ret =3D -1; /* ? */ break; case 0x94: /* SDRAM_ECCCFG */ - ret =3D sdram->ecccfg; + ret =3D s->ecccfg; break; case 0x98: /* SDRAM_ECCESR */ - ret =3D sdram->eccesr; + ret =3D s->eccesr; break; default: /* Error */ ret =3D -1; @@ -304,78 +304,78 @@ static uint32_t sdram_ddr_dcr_read(void *opaque, int = dcrn) =20 static void sdram_ddr_dcr_write(void *opaque, int dcrn, uint32_t val) { - Ppc4xxSdramDdrState *sdram =3D opaque; + Ppc4xxSdramDdrState *s =3D opaque; =20 switch (dcrn) { case SDRAM0_CFGADDR: - sdram->addr =3D val; + s->addr =3D val; break; case SDRAM0_CFGDATA: - switch (sdram->addr) { + switch (s->addr) { case 0x00: /* SDRAM_BESR0 */ - sdram->besr0 &=3D ~val; + s->besr0 &=3D ~val; break; case 0x08: /* SDRAM_BESR1 */ - sdram->besr1 &=3D ~val; + s->besr1 &=3D ~val; break; case 0x10: /* SDRAM_BEAR */ - sdram->bear =3D val; + s->bear =3D val; break; case 0x20: /* SDRAM_CFG */ val &=3D 0xFFE00000; - if (!(sdram->cfg & 0x80000000) && (val & 0x80000000)) { + if (!(s->cfg & 0x80000000) && (val & 0x80000000)) { trace_ppc4xx_sdram_enable("enable"); /* validate all RAM mappings */ - sdram_ddr_map_bcr(sdram); - sdram->status &=3D ~0x80000000; - } else if ((sdram->cfg & 0x80000000) && !(val & 0x80000000)) { + sdram_ddr_map_bcr(s); + s->status &=3D ~0x80000000; + } else if ((s->cfg & 0x80000000) && !(val & 0x80000000)) { trace_ppc4xx_sdram_enable("disable"); /* invalidate all RAM mappings */ - sdram_ddr_unmap_bcr(sdram); - sdram->status |=3D 0x80000000; + sdram_ddr_unmap_bcr(s); + s->status |=3D 0x80000000; } - if (!(sdram->cfg & 0x40000000) && (val & 0x40000000)) { - sdram->status |=3D 0x40000000; - } else if ((sdram->cfg & 0x40000000) && !(val & 0x40000000)) { - sdram->status &=3D ~0x40000000; + if (!(s->cfg & 0x40000000) && (val & 0x40000000)) { + s->status |=3D 0x40000000; + } else if ((s->cfg & 0x40000000) && !(val & 0x40000000)) { + s->status &=3D ~0x40000000; } - sdram->cfg =3D val; + s->cfg =3D val; break; case 0x24: /* SDRAM_STATUS */ /* Read-only register */ break; case 0x30: /* SDRAM_RTR */ - sdram->rtr =3D val & 0x3FF80000; + s->rtr =3D val & 0x3FF80000; break; case 0x34: /* SDRAM_PMIT */ - sdram->pmit =3D (val & 0xF8000000) | 0x07C00000; + s->pmit =3D (val & 0xF8000000) | 0x07C00000; break; case 0x40: /* SDRAM_B0CR */ - sdram_ddr_set_bcr(sdram, 0, val, sdram->cfg & 0x80000000); + sdram_ddr_set_bcr(s, 0, val, s->cfg & 0x80000000); break; case 0x44: /* SDRAM_B1CR */ - sdram_ddr_set_bcr(sdram, 1, val, sdram->cfg & 0x80000000); + sdram_ddr_set_bcr(s, 1, val, s->cfg & 0x80000000); break; case 0x48: /* SDRAM_B2CR */ - sdram_ddr_set_bcr(sdram, 2, val, sdram->cfg & 0x80000000); + sdram_ddr_set_bcr(s, 2, val, s->cfg & 0x80000000); break; case 0x4C: /* SDRAM_B3CR */ - sdram_ddr_set_bcr(sdram, 3, val, sdram->cfg & 0x80000000); + sdram_ddr_set_bcr(s, 3, val, s->cfg & 0x80000000); break; case 0x80: /* SDRAM_TR */ - sdram->tr =3D val & 0x018FC01F; + s->tr =3D val & 0x018FC01F; break; case 0x94: /* SDRAM_ECCCFG */ - sdram->ecccfg =3D val & 0x00F00000; + s->ecccfg =3D val & 0x00F00000; break; case 0x98: /* SDRAM_ECCESR */ val &=3D 0xFFF0F000; - if (sdram->eccesr =3D=3D 0 && val !=3D 0) { - qemu_irq_raise(sdram->irq); - } else if (sdram->eccesr !=3D 0 && val =3D=3D 0) { - qemu_irq_lower(sdram->irq); + if (s->eccesr =3D=3D 0 && val !=3D 0) { + qemu_irq_raise(s->irq); + } else if (s->eccesr !=3D 0 && val =3D=3D 0) { + qemu_irq_lower(s->irq); } - sdram->eccesr =3D val; + s->eccesr =3D val; break; default: /* Error */ break; @@ -386,21 +386,21 @@ static void sdram_ddr_dcr_write(void *opaque, int dcr= n, uint32_t val) =20 static void ppc4xx_sdram_ddr_reset(DeviceState *dev) { - Ppc4xxSdramDdrState *sdram =3D PPC4xx_SDRAM_DDR(dev); - - sdram->addr =3D 0; - sdram->bear =3D 0; - sdram->besr0 =3D 0; /* No error */ - sdram->besr1 =3D 0; /* No error */ - sdram->cfg =3D 0; - sdram->ecccfg =3D 0; /* No ECC */ - sdram->eccesr =3D 0; /* No error */ - sdram->pmit =3D 0x07C00000; - sdram->rtr =3D 0x05F00000; - sdram->tr =3D 0x00854009; + Ppc4xxSdramDdrState *s =3D PPC4xx_SDRAM_DDR(dev); + + s->addr =3D 0; + s->bear =3D 0; + s->besr0 =3D 0; /* No error */ + s->besr1 =3D 0; /* No error */ + s->cfg =3D 0; + s->ecccfg =3D 0; /* No ECC */ + s->eccesr =3D 0; /* No error */ + s->pmit =3D 0x07C00000; + s->rtr =3D 0x05F00000; + s->tr =3D 0x00854009; /* We pre-initialize RAM banks */ - sdram->status =3D 0; - sdram->cfg =3D 0x00800000; + s->status =3D 0; + s->cfg =3D 0x00800000; } =20 static void ppc4xx_sdram_ddr_realize(DeviceState *dev, Error **errp) @@ -572,7 +572,7 @@ static void sdram_ddr2_unmap_bcr(Ppc4xxSdramDdr2State *= sdram) =20 static uint32_t sdram_ddr2_dcr_read(void *opaque, int dcrn) { - Ppc4xxSdramDdr2State *sdram =3D opaque; + Ppc4xxSdramDdr2State *s =3D opaque; uint32_t ret =3D 0; =20 switch (dcrn) { @@ -580,9 +580,9 @@ static uint32_t sdram_ddr2_dcr_read(void *opaque, int d= crn) case SDRAM_R1BAS: case SDRAM_R2BAS: case SDRAM_R3BAS: - if (sdram->bank[dcrn - SDRAM_R0BAS].size) { - ret =3D sdram_ddr2_bcr(sdram->bank[dcrn - SDRAM_R0BAS].base, - sdram->bank[dcrn - SDRAM_R0BAS].size); + if (s->bank[dcrn - SDRAM_R0BAS].size) { + ret =3D sdram_ddr2_bcr(s->bank[dcrn - SDRAM_R0BAS].base, + s->bank[dcrn - SDRAM_R0BAS].size); } break; case SDRAM_CONF1HB: @@ -592,16 +592,16 @@ static uint32_t sdram_ddr2_dcr_read(void *opaque, int= dcrn) case SDRAM_PLBADDUHB: break; case SDRAM0_CFGADDR: - ret =3D sdram->addr; + ret =3D s->addr; break; case SDRAM0_CFGDATA: - switch (sdram->addr) { + switch (s->addr) { case 0x14: /* SDRAM_MCSTAT (405EX) */ case 0x1F: ret =3D 0x80000000; break; case 0x21: /* SDRAM_MCOPT2 */ - ret =3D sdram->mcopt2; + ret =3D s->mcopt2; break; case 0x40: /* SDRAM_MB0CF */ ret =3D 0x00008001; @@ -627,7 +627,7 @@ static uint32_t sdram_ddr2_dcr_read(void *opaque, int d= crn) =20 static void sdram_ddr2_dcr_write(void *opaque, int dcrn, uint32_t val) { - Ppc4xxSdramDdr2State *sdram =3D opaque; + Ppc4xxSdramDdr2State *s =3D opaque; =20 switch (dcrn) { case SDRAM_R0BAS: @@ -641,25 +641,25 @@ static void sdram_ddr2_dcr_write(void *opaque, int dc= rn, uint32_t val) case SDRAM_PLBADDUHB: break; case SDRAM0_CFGADDR: - sdram->addr =3D val; + s->addr =3D val; break; case SDRAM0_CFGDATA: - switch (sdram->addr) { + switch (s->addr) { case 0x00: /* B0CR */ break; case 0x21: /* SDRAM_MCOPT2 */ - if (!(sdram->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && + if (!(s->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && (val & SDRAM_DDR2_MCOPT2_DCEN)) { trace_ppc4xx_sdram_enable("enable"); /* validate all RAM mappings */ - sdram_ddr2_map_bcr(sdram); - sdram->mcopt2 |=3D SDRAM_DDR2_MCOPT2_DCEN; - } else if ((sdram->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && + sdram_ddr2_map_bcr(s); + s->mcopt2 |=3D SDRAM_DDR2_MCOPT2_DCEN; + } else if ((s->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && !(val & SDRAM_DDR2_MCOPT2_DCEN)) { trace_ppc4xx_sdram_enable("disable"); /* invalidate all RAM mappings */ - sdram_ddr2_unmap_bcr(sdram); - sdram->mcopt2 &=3D ~SDRAM_DDR2_MCOPT2_DCEN; + sdram_ddr2_unmap_bcr(s); + s->mcopt2 &=3D ~SDRAM_DDR2_MCOPT2_DCEN; } break; default: @@ -673,10 +673,10 @@ static void sdram_ddr2_dcr_write(void *opaque, int dc= rn, uint32_t val) =20 static void ppc4xx_sdram_ddr2_reset(DeviceState *dev) { - Ppc4xxSdramDdr2State *sdram =3D PPC4xx_SDRAM_DDR2(dev); + Ppc4xxSdramDdr2State *s =3D PPC4xx_SDRAM_DDR2(dev); =20 - sdram->addr =3D 0; - sdram->mcopt2 =3D 0; + s->addr =3D 0; + s->mcopt2 =3D 0; } =20 static void ppc4xx_sdram_ddr2_realize(DeviceState *dev, Error **errp) --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975522; cv=none; d=zohomail.com; s=zohoarc; b=A5+ZJ6xeDuPuF6qja04nmuJSl06RnYBTbeVhgmCSsF+0yMjlBsC55x4eR2mzzPz7SlwuSlQ9br3Lo11aGfzvhh0KK1u+uqAH1Jwm4jnpQt15OsVgRJ80Sa7deD67zb1e46DuVH6QvQSptaUFg+5bxINCYW3rdCJJQ5zEmKNhK7c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975522; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tBrwTuwxTINYomi1VC9LETpZYFuYBfHxFA0/fjQxWuU=; b=i+pSuqRPi5I7xvX8FS2815CnZLWpO8nd2xrFctNKq9cLbiv8fHKL2bnNRrhhdllnIrBVMvj/JzwXA2E8U2AEIv5VarzUPX3mAmVafYPQj/dSqmoVHQvwiobd1dgW39I7LDrXCLYBpNxpW3RgDD2J4wu0yOxbKcuyNvevGAkRrIc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975522427197.53207647028796; Fri, 28 Oct 2022 09:45:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooST1-0004fS-67; Fri, 28 Oct 2022 12:44:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSb-00083J-Am; Fri, 28 Oct 2022 12:43:57 -0400 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSZ-0000x4-EB; Fri, 28 Oct 2022 12:43:57 -0400 Received: by mail-oi1-x22e.google.com with SMTP id t10so6713221oib.5; Fri, 28 Oct 2022 09:43:54 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tBrwTuwxTINYomi1VC9LETpZYFuYBfHxFA0/fjQxWuU=; b=n8RdTvikdtfnLjDOjgsRZ0BUm9QuCyz4gGTsEeiIGthWnEhXKS/YLvBF83C6B+YU4q zNXFNhv9XjnSc8yRcRmGy+E58uGhDKYWVh20sArCSYA0kQZt9NGVFWUaR/dAKZ31k2Lx /d3ASWFfGTnFFKA9DXb6Memy7Gk4TOWQADm3gh3wrxXAlKBsxrtlxNauurZExO39lYsd zkybTceb7wGpbS/m2ndZOofZ/Pi0idQVm/Aj80IsVO8B82iaBQ3ubXc+rZCUZOB/R0eX +JWf5b8BPDf9WGv6IvwSoxmj032/R8/cryRqAlJ444lzSoU9K9lnOWFcxO7JkR6sbD4L zoNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tBrwTuwxTINYomi1VC9LETpZYFuYBfHxFA0/fjQxWuU=; b=dm44e/818JbaIk8OnZOwZz7GThlxoLxMlgtN0PokNz7dpeA4iYmul81Y+01XiSbzgX PoS8sLYrftj1Qr5pYljrw2qOEi/msyR0SAKNeDgXr20k0z+7bMHYep55iBRfBAshmuz0 D6fcFHLZO3r2YmUrD5YkuSxSGFs9i96m3JlA2Mq864qTPvcHwkolf3rySw5PH+FHR4TG G1fm54L3xK1LJHxoJsIGfcH1LiV0XLmAul3GIaIePfAW/m6Pn0eSHrJ+0oeOQ6o+Snpv HrVnIlwzUbQmSgVwW+HyV23f3yBtYec2Q5m7z1xD43n+GkRo/VVxLTDg5Bc8N335To1w FYpQ== X-Gm-Message-State: ACrzQf2vWh2jvfTpyWu56xRSvLVxNBC4EMoRPiGciv2INc4P7+go9hDh rzKejkEim2X+J+gIcEsS3W48juHcGtJEgw== X-Google-Smtp-Source: AMsMyM4Qow+KNFDa62Ej9REYbgilX4TFTx1AAFliQfbBydV0cHU/yIe5GGfC4RpNh5UZRUpFX1T2yA== X-Received: by 2002:a05:6808:140a:b0:355:230f:b7f1 with SMTP id w10-20020a056808140a00b00355230fb7f1mr8645740oiv.8.1666975433737; Fri, 28 Oct 2022 09:43:53 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, BALATON Zoltan , Daniel Henrique Barboza Subject: [PULL 53/62] ppc4xx_sdram: Generalise bank setup Date: Fri, 28 Oct 2022 13:39:42 -0300 Message-Id: <20221028163951.810456-54-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22e; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975524035100011 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan Currently only base and size are set on initial bank creation and bcr value is computed on mapping the region. Set bcr at init so the bcr encoding method becomes local to the controller model and mapping and unmapping can operate on the bank so it can be shared between different controller models. This patch converts the DDR2 controller. Signed-off-by: BALATON Zoltan Message-Id: <51b957b4b2d714a1072aa2589b979e08411640df.1666194485.git.balato= n@eik.bme.hu> Signed-off-by: Daniel Henrique Barboza --- hw/ppc/ppc4xx_sdram.c | 91 ++++++++++++++++++++++--------------------- hw/ppc/trace-events | 1 + 2 files changed, 48 insertions(+), 44 deletions(-) diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index 4bc53c8f01..63a33b8fd4 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -105,6 +105,7 @@ static void ppc4xx_sdram_banks(MemoryRegion *ram, int n= r_banks, =20 static void sdram_bank_map(Ppc4xxSdramBank *bank) { + trace_ppc4xx_sdram_map(bank->base, bank->size); memory_region_init(&bank->container, NULL, "sdram-container", bank->si= ze); memory_region_add_subregion(&bank->container, 0, &bank->ram); memory_region_add_subregion(get_system_memory(), bank->base, @@ -113,11 +114,26 @@ static void sdram_bank_map(Ppc4xxSdramBank *bank) =20 static void sdram_bank_unmap(Ppc4xxSdramBank *bank) { + trace_ppc4xx_sdram_unmap(bank->base, bank->size); memory_region_del_subregion(get_system_memory(), &bank->container); memory_region_del_subregion(&bank->container, &bank->ram); object_unparent(OBJECT(&bank->container)); } =20 +static void sdram_bank_set_bcr(Ppc4xxSdramBank *bank, uint32_t bcr, + hwaddr base, hwaddr size, int enabled) +{ + if (memory_region_is_mapped(&bank->container)) { + sdram_bank_unmap(bank); + } + bank->bcr =3D bcr; + bank->base =3D base; + bank->size =3D size; + if (enabled && (bcr & 1)) { + sdram_bank_map(bank); + } +} + enum { SDRAM0_CFGADDR =3D 0x010, SDRAM0_CFGDATA =3D 0x011, @@ -455,6 +471,8 @@ void ppc4xx_sdram_ddr_enable(Ppc4xxSdramDdrState *s) =20 /*************************************************************************= ****/ /* DDR2 SDRAM controller */ +#define SDRAM_DDR2_BCR_MASK 0xffe0ffc1 + enum { SDRAM_R0BAS =3D 0x40, SDRAM_R1BAS, @@ -528,48 +546,6 @@ static hwaddr sdram_ddr2_size(uint32_t bcr) return size; } =20 -static void sdram_ddr2_set_bcr(Ppc4xxSdramDdr2State *sdram, int i, - uint32_t bcr, int enabled) -{ - if (sdram->bank[i].bcr & 1) { - /* First unmap RAM if enabled */ - trace_ppc4xx_sdram_unmap(sdram_ddr2_base(sdram->bank[i].bcr), - sdram_ddr2_size(sdram->bank[i].bcr)); - sdram_bank_unmap(&sdram->bank[i]); - } - sdram->bank[i].bcr =3D bcr & 0xffe0ffc1; - if (enabled && (bcr & 1)) { - trace_ppc4xx_sdram_map(sdram_ddr2_base(bcr), sdram_ddr2_size(bcr)); - sdram_bank_map(&sdram->bank[i]); - } -} - -static void sdram_ddr2_map_bcr(Ppc4xxSdramDdr2State *sdram) -{ - int i; - - for (i =3D 0; i < sdram->nbanks; i++) { - if (sdram->bank[i].size) { - sdram_ddr2_set_bcr(sdram, i, - sdram_ddr2_bcr(sdram->bank[i].base, - sdram->bank[i].size), 1); - } else { - sdram_ddr2_set_bcr(sdram, i, 0, 0); - } - } -} - -static void sdram_ddr2_unmap_bcr(Ppc4xxSdramDdr2State *sdram) -{ - int i; - - for (i =3D 0; i < sdram->nbanks; i++) { - if (sdram->bank[i].size) { - sdram_ddr2_set_bcr(sdram, i, sdram->bank[i].bcr & ~1, 0); - } - } -} - static uint32_t sdram_ddr2_dcr_read(void *opaque, int dcrn) { Ppc4xxSdramDdr2State *s =3D opaque; @@ -628,6 +604,7 @@ static uint32_t sdram_ddr2_dcr_read(void *opaque, int d= crn) static void sdram_ddr2_dcr_write(void *opaque, int dcrn, uint32_t val) { Ppc4xxSdramDdr2State *s =3D opaque; + int i; =20 switch (dcrn) { case SDRAM_R0BAS: @@ -652,13 +629,25 @@ static void sdram_ddr2_dcr_write(void *opaque, int dc= rn, uint32_t val) (val & SDRAM_DDR2_MCOPT2_DCEN)) { trace_ppc4xx_sdram_enable("enable"); /* validate all RAM mappings */ - sdram_ddr2_map_bcr(s); + for (i =3D 0; i < s->nbanks; i++) { + if (s->bank[i].size) { + sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + s->bank[i].base, s->bank[i].siz= e, + 1); + } + } s->mcopt2 |=3D SDRAM_DDR2_MCOPT2_DCEN; } else if ((s->mcopt2 & SDRAM_DDR2_MCOPT2_DCEN) && !(val & SDRAM_DDR2_MCOPT2_DCEN)) { trace_ppc4xx_sdram_enable("disable"); /* invalidate all RAM mappings */ - sdram_ddr2_unmap_bcr(s); + for (i =3D 0; i < s->nbanks; i++) { + if (s->bank[i].size) { + sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + s->bank[i].base, s->bank[i].siz= e, + 0); + } + } s->mcopt2 &=3D ~SDRAM_DDR2_MCOPT2_DCEN; } break; @@ -691,6 +680,7 @@ static void ppc4xx_sdram_ddr2_realize(DeviceState *dev,= Error **errp) 2 * GiB, 1 * GiB, 512 * MiB, 256 * MiB, 128 * MiB, 64 * MiB, 32 * MiB, 16 * MiB, 8 * MiB, 0 }; + int i; =20 if (s->nbanks < 1 || s->nbanks > 4) { error_setg(errp, "Invalid number of RAM banks"); @@ -701,6 +691,19 @@ static void ppc4xx_sdram_ddr2_realize(DeviceState *dev= , Error **errp) return; } ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, valid_bank_sizes); + for (i =3D 0; i < s->nbanks; i++) { + if (s->bank[i].size) { + s->bank[i].bcr =3D sdram_ddr2_bcr(s->bank[i].base, s->bank[i].= size); + s->bank[i].bcr &=3D SDRAM_DDR2_BCR_MASK; + sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + s->bank[i].base, s->bank[i].size, 0); + } else { + sdram_bank_set_bcr(&s->bank[i], 0, 0, 0, 0); + } + trace_ppc4xx_sdram_init(sdram_ddr2_base(s->bank[i].bcr), + sdram_ddr2_size(s->bank[i].bcr), + s->bank[i].bcr); + } =20 ppc4xx_dcr_register(dcr, SDRAM0_CFGADDR, s, &sdram_ddr2_dcr_read, &sdram_ddr2_dcr_write); diff --git a/hw/ppc/trace-events b/hw/ppc/trace-events index 956938ebcd..f670e8906c 100644 --- a/hw/ppc/trace-events +++ b/hw/ppc/trace-events @@ -179,3 +179,4 @@ ppc405ep_clocks_setup(const char *trace) "%s" ppc4xx_sdram_enable(const char *trace) "%s SDRAM controller" ppc4xx_sdram_unmap(uint64_t addr, uint64_t size) "Unmap RAM area 0x%" PRIx= 64 " size 0x%" PRIx64 ppc4xx_sdram_map(uint64_t addr, uint64_t size) "Map RAM area 0x%" PRIx64 "= size 0x%" PRIx64 +ppc4xx_sdram_init(uint64_t base, uint64_t size, uint32_t bcr) "Init RAM ar= ea 0x%" PRIx64 " size 0x%" PRIx64 " bcr 0x%x" --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975712; cv=none; d=zohomail.com; s=zohoarc; b=JsW8v3nLbag2jnue5y4wOrb+K7UyDJf4Xk8G57nMtQzLnQWANGAe3Dq7TETyggssIEm+k6SxtI07XpXmlvgjW0s/KI+rpelT8rwx+ao+ZpF7gcRLSSY8kUxBx4V2l2NkyMaEz3WtBF73jbtGIbSqf7H8OMQh1Akkeeuw8pf8UFE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975712; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=HhyOCeRW1LiMbTDNAbNZHqRrSs/aW1yu2TxsHtMxy9w=; b=GzTYHf6msviS/kfWEecdGWDYD3efpo9wA95Ujla8cU6OvXpaWzVrE/m5ceXwI471JkXT1uOoMbVAAFMSuhv7QpgyX+Kho7zzsZRQGNLQyMNNDE5niGDYLJPeJEfhZS9STri6WUMcfRuBEDTPiRmIqX4sv/XdwVSuTrB2Ide4bYw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 166697571237773.08250446407317; Fri, 28 Oct 2022 09:48:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooST3-0005FF-Rt; Fri, 28 Oct 2022 12:44:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSf-0000aB-Vk; Fri, 28 Oct 2022 12:44:01 -0400 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSd-0000op-U9; Fri, 28 Oct 2022 12:44:01 -0400 Received: by mail-oi1-x236.google.com with SMTP id i7so6719808oif.4; Fri, 28 Oct 2022 09:43:59 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:43:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HhyOCeRW1LiMbTDNAbNZHqRrSs/aW1yu2TxsHtMxy9w=; b=G7ASIbpvQxjwYj3U7jbtZCzKaRM8a0qWOJ9wyyTMzCQIMl7U12+KNbkGcnuBYqsUh5 t7etGDfOljLyOIWqxSNh7qVYCD5zjc7dJdvAFf4aypIPjFNWz+Z2k4Jyp8pvrmHHNoxZ QEx3uLhddk426VeB7paM5eGaE1tyoc/rCz0s1i0Rfx+Vm1NRfKlPa8xU8WK1W0lEbCGa BUe9rd8Ah8KNXddftgg1FAXQpHK4qE68Ro4T5uJWoO4ZcjgnT7aJb9CIIXu1cDW+1TEb YED77o8h6kZq17JMoVKoj38A6o0miHkvO9KrjztDPbSsb0flTJIvtA/9gctLnDVhrOHE RkDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HhyOCeRW1LiMbTDNAbNZHqRrSs/aW1yu2TxsHtMxy9w=; b=IacLfILXMz+Lku6n9ZVvthSfLQbxB2uYobwdVeFw1DKorRAd+/vuchtLtKW7T4hSlW /er+7CkgX5VFxtyY1PnTFeI+038FjrH3CZlVMYFg5tZfWlQWuwbjsMHKE4WPYA6uYKkQ VxbnW8FdjdPWBQV6UfGf0prPlcYSWUsvzC1qZW8irJ1OzC5py0UbAIbwRWJi7/cCcoRz YPCMJEEg6GfxZCr2ZlIB3pmOQ9tSzHtCv+SheTBrBaatKMfRkuVhXTczQMGjYPhpdK4V rpbhKi/tyewO/87ODKh2ipm9FptH4nOgTqcpCFqBD/rV2ucXG/RuYFNQtSLnMz5BxPCG 3eCw== X-Gm-Message-State: ACrzQf13HZezA2nR+rA55I7zD+iMac0upQI7Aoi3eIys1lfzkXRUj1TM TAQKxnInznSy+EwSHBFoy39oRhQmcI/5Bg== X-Google-Smtp-Source: AMsMyM4DBQOvBen2GFar/tMVTJycItm6PZKZA5B5fVEVmc66NRHjMcYafynAkCO0DOkWzdHQu1fHJw== X-Received: by 2002:a05:6808:1794:b0:355:8d6c:4470 with SMTP id bg20-20020a056808179400b003558d6c4470mr189973oib.264.1666975438553; Fri, 28 Oct 2022 09:43:58 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, BALATON Zoltan , Daniel Henrique Barboza Subject: [PULL 54/62] ppc4xx_sdram: Convert DDR SDRAM controller to new bank handling Date: Fri, 28 Oct 2022 13:39:43 -0300 Message-Id: <20221028163951.810456-55-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::236; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x236.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975713233100007 Content-Type: text/plain; charset="utf-8" From: BALATON Zoltan Use the generic bank handling introduced in previous patch in the DDR SDRAM controller too. This also fixes previously broken region unmap due to sdram_ddr_unmap_bcr() ignoring container region so it crashed with an assert when the guest tried to disable the controller. Signed-off-by: BALATON Zoltan Message-Id: Signed-off-by: Daniel Henrique Barboza --- hw/ppc/ppc4xx_sdram.c | 98 ++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 61 deletions(-) diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index 63a33b8fd4..7c097efe20 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -141,6 +141,8 @@ enum { =20 /*************************************************************************= ****/ /* DDR SDRAM controller */ +#define SDRAM_DDR_BCR_MASK 0xFFDEE001 + static uint32_t sdram_ddr_bcr(hwaddr ram_base, hwaddr ram_size) { uint32_t bcr; @@ -199,58 +201,6 @@ static hwaddr sdram_ddr_size(uint32_t bcr) return size; } =20 -static void sdram_ddr_set_bcr(Ppc4xxSdramDdrState *sdram, int i, - uint32_t bcr, int enabled) -{ - if (sdram->bank[i].bcr & 1) { - /* Unmap RAM */ - trace_ppc4xx_sdram_unmap(sdram_ddr_base(sdram->bank[i].bcr), - sdram_ddr_size(sdram->bank[i].bcr)); - memory_region_del_subregion(get_system_memory(), - &sdram->bank[i].container); - memory_region_del_subregion(&sdram->bank[i].container, - &sdram->bank[i].ram); - object_unparent(OBJECT(&sdram->bank[i].container)); - } - sdram->bank[i].bcr =3D bcr & 0xFFDEE001; - if (enabled && (bcr & 1)) { - trace_ppc4xx_sdram_map(sdram_ddr_base(bcr), sdram_ddr_size(bcr)); - memory_region_init(&sdram->bank[i].container, NULL, "sdram-contain= er", - sdram_ddr_size(bcr)); - memory_region_add_subregion(&sdram->bank[i].container, 0, - &sdram->bank[i].ram); - memory_region_add_subregion(get_system_memory(), - sdram_ddr_base(bcr), - &sdram->bank[i].container); - } -} - -static void sdram_ddr_map_bcr(Ppc4xxSdramDdrState *sdram) -{ - int i; - - for (i =3D 0; i < sdram->nbanks; i++) { - if (sdram->bank[i].size !=3D 0) { - sdram_ddr_set_bcr(sdram, i, sdram_ddr_bcr(sdram->bank[i].base, - sdram->bank[i].size)= , 1); - } else { - sdram_ddr_set_bcr(sdram, i, 0, 0); - } - } -} - -static void sdram_ddr_unmap_bcr(Ppc4xxSdramDdrState *sdram) -{ - int i; - - for (i =3D 0; i < sdram->nbanks; i++) { - trace_ppc4xx_sdram_unmap(sdram_ddr_base(sdram->bank[i].bcr), - sdram_ddr_size(sdram->bank[i].bcr)); - memory_region_del_subregion(get_system_memory(), - &sdram->bank[i].ram); - } -} - static uint32_t sdram_ddr_dcr_read(void *opaque, int dcrn) { Ppc4xxSdramDdrState *s =3D opaque; @@ -321,6 +271,7 @@ static uint32_t sdram_ddr_dcr_read(void *opaque, int dc= rn) static void sdram_ddr_dcr_write(void *opaque, int dcrn, uint32_t val) { Ppc4xxSdramDdrState *s =3D opaque; + int i; =20 switch (dcrn) { case SDRAM0_CFGADDR: @@ -342,12 +293,24 @@ static void sdram_ddr_dcr_write(void *opaque, int dcr= n, uint32_t val) if (!(s->cfg & 0x80000000) && (val & 0x80000000)) { trace_ppc4xx_sdram_enable("enable"); /* validate all RAM mappings */ - sdram_ddr_map_bcr(s); + for (i =3D 0; i < s->nbanks; i++) { + if (s->bank[i].size) { + sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + s->bank[i].base, s->bank[i].siz= e, + 1); + } + } s->status &=3D ~0x80000000; } else if ((s->cfg & 0x80000000) && !(val & 0x80000000)) { trace_ppc4xx_sdram_enable("disable"); /* invalidate all RAM mappings */ - sdram_ddr_unmap_bcr(s); + for (i =3D 0; i < s->nbanks; i++) { + if (s->bank[i].size) { + sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + s->bank[i].base, s->bank[i].siz= e, + 0); + } + } s->status |=3D 0x80000000; } if (!(s->cfg & 0x40000000) && (val & 0x40000000)) { @@ -367,16 +330,16 @@ static void sdram_ddr_dcr_write(void *opaque, int dcr= n, uint32_t val) s->pmit =3D (val & 0xF8000000) | 0x07C00000; break; case 0x40: /* SDRAM_B0CR */ - sdram_ddr_set_bcr(s, 0, val, s->cfg & 0x80000000); - break; case 0x44: /* SDRAM_B1CR */ - sdram_ddr_set_bcr(s, 1, val, s->cfg & 0x80000000); - break; case 0x48: /* SDRAM_B2CR */ - sdram_ddr_set_bcr(s, 2, val, s->cfg & 0x80000000); - break; case 0x4C: /* SDRAM_B3CR */ - sdram_ddr_set_bcr(s, 3, val, s->cfg & 0x80000000); + i =3D (s->addr - 0x40) / 4; + val &=3D SDRAM_DDR_BCR_MASK; + if (s->bank[i].size) { + sdram_bank_set_bcr(&s->bank[i], val, + sdram_ddr_base(val), sdram_ddr_size(val= ), + s->cfg & 0x80000000); + } break; case 0x80: /* SDRAM_TR */ s->tr =3D val & 0x018FC01F; @@ -426,6 +389,7 @@ static void ppc4xx_sdram_ddr_realize(DeviceState *dev, = Error **errp) const ram_addr_t valid_bank_sizes[] =3D { 256 * MiB, 128 * MiB, 64 * MiB, 32 * MiB, 16 * MiB, 8 * MiB, 4 * M= iB, 0 }; + int i; =20 if (s->nbanks < 1 || s->nbanks > 4) { error_setg(errp, "Invalid number of RAM banks"); @@ -436,6 +400,18 @@ static void ppc4xx_sdram_ddr_realize(DeviceState *dev,= Error **errp) return; } ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, valid_bank_sizes); + for (i =3D 0; i < s->nbanks; i++) { + if (s->bank[i].size) { + s->bank[i].bcr =3D sdram_ddr_bcr(s->bank[i].base, s->bank[i].s= ize); + sdram_bank_set_bcr(&s->bank[i], s->bank[i].bcr, + s->bank[i].base, s->bank[i].size, 0); + } else { + sdram_bank_set_bcr(&s->bank[i], 0, 0, 0, 0); + } + trace_ppc4xx_sdram_init(sdram_ddr_base(s->bank[i].bcr), + sdram_ddr_size(s->bank[i].bcr), + s->bank[i].bcr); + } =20 sysbus_init_irq(SYS_BUS_DEVICE(dev), &s->irq); =20 --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975710; cv=none; d=zohomail.com; s=zohoarc; b=OIldOi2asaMWpeyWUYvRU0aSym0KBXvvMllK9U7zqpvsbUrdfULArd0To/TOgWqQQreW2fdXN4X5ghmTVph1g+DFt4UOxQr84jNeGKVCPxQgAw6n6sy5rjw3RHBN+ZQaUIJAlF5YqhgGvUGANJfgmqzHLE9ENPQd8CVvvkzdOHc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975710; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=rPsjNWUlnzAtKEaOlOgj7hfAM51su/vOOnHQpznXcSE=; b=UidAhr3d5TRaTwYZMKoOK0f3JGJhix7S7Zd8MR2vR1NAuI0fEJ2hCutrYgVeCgEUO0IltRrdr5ow0TjP88srTwIgbTstOCKJGYf0Lol34Ds3YaKY8/cvn0+CXgCeaZdv0fr1eeWAOJkcGsikv9ms41TRzXm6XLp275juEfeW3mI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975710274179.22143941538582; Fri, 28 Oct 2022 09:48:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooST5-0005Xb-B3; Fri, 28 Oct 2022 12:44:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSk-0001b9-LO; Fri, 28 Oct 2022 12:44:06 -0400 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSi-00010I-SV; Fri, 28 Oct 2022 12:44:06 -0400 Received: by mail-oi1-x22f.google.com with SMTP id y67so6726422oiy.1; Fri, 28 Oct 2022 09:44:04 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.43.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:44:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rPsjNWUlnzAtKEaOlOgj7hfAM51su/vOOnHQpznXcSE=; b=Dsesw3p43d0C+1rzM8Ot96EzycvHg6LxdzMhiYumppFn/noPkNe9CbUlLR3hdzl51A 8v53rf/fSH9RxuHhmtH4wYWi1dOE7PviU+muvGvj+BANpCjcWrcYhRksV966IIkAlzCh O31IfKHBrvT2QbT2NWBvNYLKStMBI+13uC+7jgdz6hUX0BOAhOZPSkjd2gDyqkEToshx tOj4qe8mTfj2TqD/Tn+857gBJgcU8+VAVMp7i6KOSuTWhJSIn+rO0Mhw+qlsFOx0V2Mm w83cDxPgL4L+/aoV/+G9U3/FVRjwzLCxtYr3gllAlPz2zqAsxM5XclAeROt8Fj1xfYuh ya4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rPsjNWUlnzAtKEaOlOgj7hfAM51su/vOOnHQpznXcSE=; b=0LJRuysdASnSXLChLal49JRNb+id1Mf4WZJ+BVHuPGiGdsXjABBXivHPtl+GUcJF4v R+ZhQpYRx/ViVBKSp7rRjzNfd9En+RJTmzyqWQv2bCLC2ueSA5dioArbVIdGGLz+l6A9 fkbEkSb1eP8ySj6ExI0Di8UeXBEnsjink/RwWJcvJ796GZK1NqxraT/7Nk1sI56QKniH ejMwnC163avUTQfHpfWh7MWM9moArQtJjFZHtEcfbpM9jbenqDmWz0cVaUMoABFdPMYU YUT2F/0yR/NemqedTBKlca8pWS7GcZQPQ4QmQf0BP13Tdncgw36L34a+bZ3n+eQVc8Q/ hZwA== X-Gm-Message-State: ACrzQf1kQ1LSSc4ocEOnJgS9nh3E+t8scH0RipCJMMnWiKjojU9Dkj7O 3ew+IbmheIWKegQcEb3NtPopqO4o0z1Pzw== X-Google-Smtp-Source: AMsMyM6/fOWD0N37LXyjxeDufExVLAF9JZrB8NTgV6zPkoZ3DAlB1B4B6/E+0nGtr5D6P+r1aMZeug== X-Received: by 2002:a05:6808:1205:b0:354:2815:4f3c with SMTP id a5-20020a056808120500b0035428154f3cmr8704402oil.26.1666975443151; Fri, 28 Oct 2022 09:44:03 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, BALATON Zoltan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Daniel Henrique Barboza Subject: [PULL 55/62] ppc4xx_sdram: Add errp parameter to ppc4xx_sdram_banks() Date: Fri, 28 Oct 2022 13:39:44 -0300 Message-Id: <20221028163951.810456-56-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22f; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975711236100003 From: BALATON Zoltan Do not exit from ppc4xx_sdram_banks() but report error via an errp parameter instead. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <04bb3445439c2f37b99e74b3fdf4e62c2e6f7e04.1666194485.git.balato= n@eik.bme.hu> Signed-off-by: Daniel Henrique Barboza --- hw/ppc/ppc4xx_sdram.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/hw/ppc/ppc4xx_sdram.c b/hw/ppc/ppc4xx_sdram.c index 7c097efe20..8d7137faf3 100644 --- a/hw/ppc/ppc4xx_sdram.c +++ b/hw/ppc/ppc4xx_sdram.c @@ -52,10 +52,12 @@ * must be one of a small set of sizes. The number of banks and the suppor= ted * sizes varies by SoC. */ -static void ppc4xx_sdram_banks(MemoryRegion *ram, int nr_banks, +static bool ppc4xx_sdram_banks(MemoryRegion *ram, int nr_banks, Ppc4xxSdramBank ram_banks[], - const ram_addr_t sdram_bank_sizes[]) + const ram_addr_t sdram_bank_sizes[], + Error **errp) { + ERRP_GUARD(); ram_addr_t size_left =3D memory_region_size(ram); ram_addr_t base =3D 0; ram_addr_t bank_size; @@ -93,14 +95,16 @@ static void ppc4xx_sdram_banks(MemoryRegion *ram, int n= r_banks, sdram_bank_sizes[i] / MiB, sdram_bank_sizes[i + 1] ? ", " : ""); } - error_report("at most %d bank%s of %s MiB each supported", - nr_banks, nr_banks =3D=3D 1 ? "" : "s", s->str); - error_printf("Possible valid RAM size: %" PRIi64 " MiB\n", - used_size ? used_size / MiB : sdram_bank_sizes[i - 1] / MiB); + error_setg(errp, "Invalid SDRAM banks"); + error_append_hint(errp, "at most %d bank%s of %s MiB each supporte= d\n", + nr_banks, nr_banks =3D=3D 1 ? "" : "s", s->str); + error_append_hint(errp, "Possible valid RAM size: %" PRIi64 " MiB\= n", + used_size ? used_size / MiB : sdram_bank_sizes[i - 1] / = MiB); =20 g_string_free(s, true); - exit(EXIT_FAILURE); + return false; } + return true; } =20 static void sdram_bank_map(Ppc4xxSdramBank *bank) @@ -399,7 +403,10 @@ static void ppc4xx_sdram_ddr_realize(DeviceState *dev,= Error **errp) error_setg(errp, "Missing dram memory region"); return; } - ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, valid_bank_sizes); + if (!ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, + valid_bank_sizes, errp)) { + return; + } for (i =3D 0; i < s->nbanks; i++) { if (s->bank[i].size) { s->bank[i].bcr =3D sdram_ddr_bcr(s->bank[i].base, s->bank[i].s= ize); @@ -666,7 +673,10 @@ static void ppc4xx_sdram_ddr2_realize(DeviceState *dev= , Error **errp) error_setg(errp, "Missing dram memory region"); return; } - ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, valid_bank_sizes); + if (!ppc4xx_sdram_banks(s->dram_mr, s->nbanks, s->bank, + valid_bank_sizes, errp)) { + return; + } for (i =3D 0; i < s->nbanks; i++) { if (s->bank[i].size) { s->bank[i].bcr =3D sdram_ddr2_bcr(s->bank[i].base, s->bank[i].= size); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666976018; cv=none; d=zohomail.com; s=zohoarc; b=Cy3ikQp+HYIx82Jw8WVa+kR201fekSXJGToBwUKtzOHD/KjhCc5emtonfwSPFwsS6WWS1sC1S5ahUgfG38dkPwrHONSKA57z88iVvOJiWXQdfmP2N6TZFuc5wUqzl1r30rPZtBcPfbukAaYHjIv5/D5Uak5wqkGFs7bZN/Y/qqI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666976018; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=fkKD5NwF/AdGDH5rY2PB8WuM5fuyoDzb8BPGEhn1NZ4=; b=L1gV5Hoa3P2/oDP9XoWkHxJmxFcTGrIslRlf4xhhcM5tHfip+CT/+DhYGIpUnBm7mC7kYdrpvwdl9xY6QDo+AY+hK1Fo5eWlBVYMB+g3LZ0FpLmO+AZKV5AIH7JYsJCDx6vOjX0FF/nlFFeBQkd92eaKnDnOHj2k2+Cm9NV9yXQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666976018132658.2553577678431; Fri, 28 Oct 2022 09:53:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooST7-0005vK-16; Fri, 28 Oct 2022 12:44:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSp-0002cf-Ix; Fri, 28 Oct 2022 12:44:11 -0400 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSn-00011b-TD; Fri, 28 Oct 2022 12:44:11 -0400 Received: by mail-ot1-x329.google.com with SMTP id t4-20020a9d7f84000000b00661c3d864f9so3278565otp.10; Fri, 28 Oct 2022 09:44:09 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.44.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:44:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fkKD5NwF/AdGDH5rY2PB8WuM5fuyoDzb8BPGEhn1NZ4=; b=gffO2UE79xNytQdmUFwoCOw64GqPRwB4eMADF2pflSz+XjVbCddNACbwBo4OaQem4h c7kkCZWeLf3KvFMxrLFeCLZKX+OyVZCNU1UKQLVySMwrNWXNk+Hbp5wmGZI6TURgXsMa up2ls+BpxPMuxaZUqLSM5iU4HL2TlIoobJOH0z0gRFEAHQnFS3QHnEEDNk1SfhQSbQnp fTKCCZFVD2BbqgFt33edIEE2TzH4JTRIFcc6djVNcbU52BhtkXUsLKEKfSPmzYaE66OE 7O98BHti8RfdQd5jL7/U4KxnU/hUaJ7670Yh39dmDm4ACI6fAIbVyFk0aIHKnAl/fFJ7 MPqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fkKD5NwF/AdGDH5rY2PB8WuM5fuyoDzb8BPGEhn1NZ4=; b=MapBfdYiSRXyo+5VduV4/H33OJ4z1u855K0EHsRwjX+KfKrYQ8WG6qKwxSbyMDeyha qd/ONd8ZlwBN2qGJQr4sHse1b1ueV7QcYqHX25ORvqQAQn8jtRLw3i0AdXQEa2+l5bQq ZmdKPnu8e4nSS3fVZ1UHZ2nHtx6imHoZHoD6AiRijITv+HRl1EABtJ0aJuixtDFMStHe Iodr1NWaWXKfPvnjrR9PYJY3xDtbydlZHnKbqqUyvEeAfNMlOKbabP0sVqrE7gul2KWl h7/XSRhe3ChEGnoYVgPQOIaofBAnYzXP/8ItWSFshqwiQn52Xtf0vTTpVsayP1h2ezC4 g/xw== X-Gm-Message-State: ACrzQf3UCGyeDhXqe1fmRkt0VhIRiE+zHW1+l9r+lHOG9VN5OfdZ7N+N f58W/nc28CzV3gQLygtIqAjCmA7tgBsR2g== X-Google-Smtp-Source: AMsMyM7MtAdDNfezp+Iqz481+g2z8msnX6uAoTgdt9fk5Tc65ecGN54oAKjsPLNAAKDPqc8g5WpQUA== X-Received: by 2002:a05:6830:1217:b0:661:c542:503c with SMTP id r23-20020a056830121700b00661c542503cmr136586otp.40.1666975448092; Fri, 28 Oct 2022 09:44:08 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Leandro Lupori , Daniel Henrique Barboza Subject: [PULL 56/62] target/ppc: Add new PMC HFLAGS Date: Fri, 28 Oct 2022 13:39:45 -0300 Message-Id: <20221028163951.810456-57-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::329; envelope-from=danielhb413@gmail.com; helo=mail-ot1-x329.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666976019411100001 Content-Type: text/plain; charset="utf-8" From: Leandro Lupori Add 2 new PMC related HFLAGS: - HFLAGS_PMCJCE - value of MMCR0 PMCjCE bit - HFLAGS_PMC_OTHER - set if a PMC other than PMC5-6 is enabled These flags allow further optimization of PMC5 update code, by allowing frequently tested conditions to be performed at translation time. Signed-off-by: Leandro Lupori Reviewed-by: Daniel Henrique Barboza Message-Id: <20221025202424.195984-3-leandro.lupori@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/cpu.h | 4 +++- target/ppc/helper_regs.c | 6 ++++++ target/ppc/translate.c | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index cc2d0305ff..81d4263a07 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -696,7 +696,9 @@ enum { HFLAGS_PR =3D 14, /* MSR_PR */ HFLAGS_PMCC0 =3D 15, /* MMCR0 PMCC bit 0 */ HFLAGS_PMCC1 =3D 16, /* MMCR0 PMCC bit 1 */ - HFLAGS_INSN_CNT =3D 17, /* PMU instruction count enabled */ + HFLAGS_PMCJCE =3D 17, /* MMCR0 PMCjCE bit */ + HFLAGS_PMC_OTHER =3D 18, /* PMC other than PMC5-6 is enabled */ + HFLAGS_INSN_CNT =3D 19, /* PMU instruction count enabled */ HFLAGS_VSX =3D 23, /* MSR_VSX if cpu has VSX */ HFLAGS_VR =3D 25, /* MSR_VR if cpu has VRE */ =20 diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index 2e85e124ab..c0aee5855b 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -109,6 +109,9 @@ static uint32_t hreg_compute_hflags_value(CPUPPCState *= env) if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMCC1) { hflags |=3D 1 << HFLAGS_PMCC1; } + if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMCjCE) { + hflags |=3D 1 << HFLAGS_PMCJCE; + } =20 #ifndef CONFIG_USER_ONLY if (!env->has_hv_mode || (msr & (1ull << MSR_HV))) { @@ -119,6 +122,9 @@ static uint32_t hreg_compute_hflags_value(CPUPPCState *= env) if (env->pmc_ins_cnt) { hflags |=3D 1 << HFLAGS_INSN_CNT; } + if (env->pmc_ins_cnt & 0x1e) { + hflags |=3D 1 << HFLAGS_PMC_OTHER; + } #endif =20 /* diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 29e4b728e2..8d79522f98 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -177,6 +177,8 @@ struct DisasContext { bool hr; bool mmcr0_pmcc0; bool mmcr0_pmcc1; + bool mmcr0_pmcjce; + bool pmc_other; bool pmu_insn_cnt; ppc_spr_t *spr_cb; /* Needed to check rights for mfspr/mtspr */ int singlestep_enabled; @@ -7512,6 +7514,8 @@ static void ppc_tr_init_disas_context(DisasContextBas= e *dcbase, CPUState *cs) ctx->hr =3D (hflags >> HFLAGS_HR) & 1; ctx->mmcr0_pmcc0 =3D (hflags >> HFLAGS_PMCC0) & 1; ctx->mmcr0_pmcc1 =3D (hflags >> HFLAGS_PMCC1) & 1; + ctx->mmcr0_pmcjce =3D (hflags >> HFLAGS_PMCJCE) & 1; + ctx->pmc_other =3D (hflags >> HFLAGS_PMC_OTHER) & 1; ctx->pmu_insn_cnt =3D (hflags >> HFLAGS_INSN_CNT) & 1; =20 ctx->singlestep_enabled =3D 0; --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975661; cv=none; d=zohomail.com; s=zohoarc; b=GlJa8j8ZG9eKYSmgjdTuBEaG1kZkU1c14yJ1FhG7p8rArqicXkNx4LOwOC8jYi2xTZ5hFUerzsslS48jVqhCyqmlS5Ng+ySmKyKW9G2Gh7Jn1gKcybCotWndbVMDQbbJKwk5DbcSfrMi2DGdCf/s2v7uQl/PKt/OmAaBXNVXLEM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975661; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=NGnQWlzMtyUtHXLrjMDWd0Rce4Z/L/hcD+8jmeiuS5I=; b=YdiZQdOOQ1IBAhFP1M0SE7NW4jg4YcMvaSiZuHWQkxhWf6zojDC5l5N9L2f51LlMNOAGT7hn/OAzv5EvmCQWLh3qAGnQLR/rs+5QJWkWRwsFILJrzi1lgP3+3gAXxx1RMh4ZG7nbNMtjwz2k7FLi3+RWMMQPbgALP7YbKycGXH8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975661963295.4703355287842; Fri, 28 Oct 2022 09:47:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooST9-0006FF-0b; Fri, 28 Oct 2022 12:44:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSSv-0003qF-O6; Fri, 28 Oct 2022 12:44:18 -0400 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSt-000135-L8; Fri, 28 Oct 2022 12:44:17 -0400 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-13bd2aea61bso6949666fac.0; Fri, 28 Oct 2022 09:44:14 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.44.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:44:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NGnQWlzMtyUtHXLrjMDWd0Rce4Z/L/hcD+8jmeiuS5I=; b=duHeNbde1x34Zn7TDMAOaKEgRUGDbliQ89Z4W8y1kZyoSYCn2MhkT3QHnbSxmXhke7 /C61F6cGoplAmS8WJyrA79oUGr5SeO2V6qi6q+DpvRIfGCBDzrBWlRCvNBacfKwIYJ/W Z3W3CG0P6hyd7DqBMbGW6uOEnxbVAeWHSTsdKUWzMbFj38yuDJt60VEn1e/ajUAhydZ7 sGjb/GqF8HsQfuhRwdVoIV3ZkYSi5q+5h2pTXAJlTvkeS/aEb0rQJ8CfkcxrmQsEDtZA 04kWYu5m0jwqpvpQmxleodjQ47rh/ylw4/OxCJfIjNg5uSgXLpo+93iLy2I0L4sO5eUl oQ+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NGnQWlzMtyUtHXLrjMDWd0Rce4Z/L/hcD+8jmeiuS5I=; b=z8xcNggg94yvp88qzUPMZjFzJtAfJLH4PR6qrcJiKs/JJMzvL/H/p4zgsHWrHOZ1F2 hjXKD/Rgre7YmGoqmo7zwgU2zBPB4p/IGX6sGzUhXlzJAT7rs9/7necf5nrAaNWJsard /5N3Jfb/6A7xh70ZE86LrkkGQrYI12FFHH+BmQCDBleluB9aVX+3E/R3SuX/hqtvN1kk X+VP44z7Pb/98ayKZSWZc+rTnQxmkvl5t6OL7Cu4sYSSTMQBJSxjrSx8VW40G55aVJ91 dZvTroSwjgq9tcbt7sWwbVdjgfCWVw9z7vv0WyCA7K49GHvAz7GC7mYWsdJwGWqNuYf2 zCbQ== X-Gm-Message-State: ACrzQf2uJ4i0Sts7vevkubPI+5TYKCn3dAU3pymhPbrJsnni5zUU8yaf 5hKQNiNuwmJPvsz7scu68FLoNRYknhgrQw== X-Google-Smtp-Source: AMsMyM6as5cILvnfO4E9Xr7vQ5nSGWzuO9wBAgQ2HxkR9uuJVhdyRzwwvIfgD6jPXufUzMg0bI+6tw== X-Received: by 2002:a05:6870:f61a:b0:13b:9374:203e with SMTP id ek26-20020a056870f61a00b0013b9374203emr50229oab.18.1666975453689; Fri, 28 Oct 2022 09:44:13 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Leandro Lupori , Daniel Henrique Barboza Subject: [PULL 57/62] target/ppc: Increment PMC5 with inline insns Date: Fri, 28 Oct 2022 13:39:46 -0300 Message-Id: <20221028163951.810456-58-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::32; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x32.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975662846100003 Content-Type: text/plain; charset="utf-8" From: Leandro Lupori Profiling QEMU during Fedora 35 for PPC64 boot revealed that 6.39% of total time was being spent in helper_insns_inc(), on a POWER9 machine. To avoid calling this helper every time PMCs had to be incremented, an inline implementation of PMC5 increment and check for overflow was developed. This led to a reduction of about 12% in Fedora's boot time. Signed-off-by: Leandro Lupori Reviewed-by: Daniel Henrique Barboza Message-Id: <20221025202424.195984-4-leandro.lupori@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza --- target/ppc/helper.h | 1 + target/ppc/power8-pmu.c | 74 +++++++++++++++++++++-------------------- target/ppc/power8-pmu.h | 3 ++ target/ppc/translate.c | 28 ++++++++++++++-- 4 files changed, 67 insertions(+), 39 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 25533b8f33..8dd22a35e4 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -30,6 +30,7 @@ DEF_HELPER_2(store_mmcr1, void, env, tl) DEF_HELPER_3(store_pmc, void, env, i32, i64) DEF_HELPER_2(read_pmc, tl, env, i32) DEF_HELPER_2(insns_inc, void, env, i32) +DEF_HELPER_1(handle_pmc5_overflow, void, env) #endif DEF_HELPER_1(check_tlb_flush_local, void, env) DEF_HELPER_1(check_tlb_flush_global, void, env) diff --git a/target/ppc/power8-pmu.c b/target/ppc/power8-pmu.c index beeab5c494..1381072b9e 100644 --- a/target/ppc/power8-pmu.c +++ b/target/ppc/power8-pmu.c @@ -22,8 +22,6 @@ =20 #if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY) =20 -#define PMC_COUNTER_NEGATIVE_VAL 0x80000000UL - static bool pmc_has_overflow_enabled(CPUPPCState *env, int sprn) { if (sprn =3D=3D SPR_POWER_PMC1) { @@ -88,49 +86,47 @@ static bool pmu_increment_insns(CPUPPCState *env, uint3= 2_t num_insns) bool overflow_triggered =3D false; target_ulong tmp; =20 - if (unlikely(ins_cnt & 0x1e)) { - if (ins_cnt & (1 << 1)) { - tmp =3D env->spr[SPR_POWER_PMC1]; - tmp +=3D num_insns; - if (tmp >=3D PMC_COUNTER_NEGATIVE_VAL && (mmcr0 & MMCR0_PMC1CE= )) { - tmp =3D PMC_COUNTER_NEGATIVE_VAL; - overflow_triggered =3D true; - } - env->spr[SPR_POWER_PMC1] =3D tmp; + if (ins_cnt & (1 << 1)) { + tmp =3D env->spr[SPR_POWER_PMC1]; + tmp +=3D num_insns; + if (tmp >=3D PMC_COUNTER_NEGATIVE_VAL && (mmcr0 & MMCR0_PMC1CE)) { + tmp =3D PMC_COUNTER_NEGATIVE_VAL; + overflow_triggered =3D true; } + env->spr[SPR_POWER_PMC1] =3D tmp; + } =20 - if (ins_cnt & (1 << 2)) { - tmp =3D env->spr[SPR_POWER_PMC2]; - tmp +=3D num_insns; - if (tmp >=3D PMC_COUNTER_NEGATIVE_VAL && (mmcr0 & MMCR0_PMCjCE= )) { - tmp =3D PMC_COUNTER_NEGATIVE_VAL; - overflow_triggered =3D true; - } - env->spr[SPR_POWER_PMC2] =3D tmp; + if (ins_cnt & (1 << 2)) { + tmp =3D env->spr[SPR_POWER_PMC2]; + tmp +=3D num_insns; + if (tmp >=3D PMC_COUNTER_NEGATIVE_VAL && (mmcr0 & MMCR0_PMCjCE)) { + tmp =3D PMC_COUNTER_NEGATIVE_VAL; + overflow_triggered =3D true; + } + env->spr[SPR_POWER_PMC2] =3D tmp; + } + + if (ins_cnt & (1 << 3)) { + tmp =3D env->spr[SPR_POWER_PMC3]; + tmp +=3D num_insns; + if (tmp >=3D PMC_COUNTER_NEGATIVE_VAL && (mmcr0 & MMCR0_PMCjCE)) { + tmp =3D PMC_COUNTER_NEGATIVE_VAL; + overflow_triggered =3D true; } + env->spr[SPR_POWER_PMC3] =3D tmp; + } =20 - if (ins_cnt & (1 << 3)) { - tmp =3D env->spr[SPR_POWER_PMC3]; + if (ins_cnt & (1 << 4)) { + target_ulong mmcr1 =3D env->spr[SPR_POWER_MMCR1]; + int sel =3D extract64(mmcr1, MMCR1_PMC4EVT_EXTR, MMCR1_EVT_SIZE); + if (sel =3D=3D 0x02 || (env->spr[SPR_CTRL] & CTRL_RUN)) { + tmp =3D env->spr[SPR_POWER_PMC4]; tmp +=3D num_insns; if (tmp >=3D PMC_COUNTER_NEGATIVE_VAL && (mmcr0 & MMCR0_PMCjCE= )) { tmp =3D PMC_COUNTER_NEGATIVE_VAL; overflow_triggered =3D true; } - env->spr[SPR_POWER_PMC3] =3D tmp; - } - - if (ins_cnt & (1 << 4)) { - target_ulong mmcr1 =3D env->spr[SPR_POWER_MMCR1]; - int sel =3D extract64(mmcr1, MMCR1_PMC4EVT_EXTR, MMCR1_EVT_SIZ= E); - if (sel =3D=3D 0x02 || (env->spr[SPR_CTRL] & CTRL_RUN)) { - tmp =3D env->spr[SPR_POWER_PMC4]; - tmp +=3D num_insns; - if (tmp >=3D PMC_COUNTER_NEGATIVE_VAL && (mmcr0 & MMCR0_PM= CjCE)) { - tmp =3D PMC_COUNTER_NEGATIVE_VAL; - overflow_triggered =3D true; - } - env->spr[SPR_POWER_PMC4] =3D tmp; - } + env->spr[SPR_POWER_PMC4] =3D tmp; } } =20 @@ -310,6 +306,12 @@ static void fire_PMC_interrupt(PowerPCCPU *cpu) raise_ebb_perfm_exception(env); } =20 +void helper_handle_pmc5_overflow(CPUPPCState *env) +{ + env->spr[SPR_POWER_PMC5] =3D PMC_COUNTER_NEGATIVE_VAL; + fire_PMC_interrupt(env_archcpu(env)); +} + /* This helper assumes that the PMC is running. */ void helper_insns_inc(CPUPPCState *env, uint32_t num_insns) { diff --git a/target/ppc/power8-pmu.h b/target/ppc/power8-pmu.h index 9692dd765e..c0093e2219 100644 --- a/target/ppc/power8-pmu.h +++ b/target/ppc/power8-pmu.h @@ -14,6 +14,9 @@ #define POWER8_PMU_H =20 #if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY) + +#define PMC_COUNTER_NEGATIVE_VAL 0x80000000UL + void cpu_ppc_pmu_init(CPUPPCState *env); void pmu_update_summaries(CPUPPCState *env); #else diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 8d79522f98..19c1d17cb0 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -36,6 +36,7 @@ #include "exec/log.h" #include "qemu/atomic128.h" #include "spr_common.h" +#include "power8-pmu.h" =20 #include "qemu/qemu-print.h" #include "qapi/error.h" @@ -4271,6 +4272,9 @@ static void pmu_count_insns(DisasContext *ctx) } =20 #if !defined(CONFIG_USER_ONLY) + TCGLabel *l; + TCGv t0; + /* * The PMU insns_inc() helper stops the internal PMU timer if a * counter overflows happens. In that case, if the guest is @@ -4279,8 +4283,26 @@ static void pmu_count_insns(DisasContext *ctx) */ gen_icount_io_start(ctx); =20 - gen_helper_insns_inc(cpu_env, tcg_constant_i32(ctx->base.num_insns)); -#else + /* Avoid helper calls when only PMC5-6 are enabled. */ + if (!ctx->pmc_other) { + l =3D gen_new_label(); + t0 =3D tcg_temp_new(); + + gen_load_spr(t0, SPR_POWER_PMC5); + tcg_gen_addi_tl(t0, t0, ctx->base.num_insns); + gen_store_spr(SPR_POWER_PMC5, t0); + /* Check for overflow, if it's enabled */ + if (ctx->mmcr0_pmcjce) { + tcg_gen_brcondi_tl(TCG_COND_LT, t0, PMC_COUNTER_NEGATIVE_VAL, = l); + gen_helper_handle_pmc5_overflow(cpu_env); + } + + gen_set_label(l); + tcg_temp_free(t0); + } else { + gen_helper_insns_inc(cpu_env, tcg_constant_i32(ctx->base.num_insns= )); + } + #else /* * User mode can read (but not write) PMC5 and start/stop * the PMU via MMCR0_FC. In this case just increment @@ -4293,7 +4315,7 @@ static void pmu_count_insns(DisasContext *ctx) gen_store_spr(SPR_POWER_PMC5, t0); =20 tcg_temp_free(t0); -#endif /* #if !defined(CONFIG_USER_ONLY) */ + #endif /* #if !defined(CONFIG_USER_ONLY) */ } #else static void pmu_count_insns(DisasContext *ctx) --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975515; cv=none; d=zohomail.com; s=zohoarc; b=hcixk5sgqFnwHz8V05+L1cZye71KSPW6w6JqX/kAvg3Y4KEgMF1Nu7Z1X1G1t9NOyh4YQ3VLR7IVHfjPqEAkkIiKbt7fhcNrLwweFN3pDR4TGozbj5USsuCbXseZE4NI4PPYhGRndDvBW3ALQ9G+PvoFXvU23HiX6v4hIIkxLUM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975515; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8LRbBucj4Y7vI8Jav5c0MpNFLgAoYCOD3t1+Eh8zQLg=; b=lkX2gJMH6oFunmDlXTyKNnUk5zOlyejh1S4hbfJx8YbmGrdi5Fl3402CZ7fD+Yg94wP0Y4wbuY7wRDYSe6HN5gwQM5nlu/nlKODHaNM3XmmOao0QEoDeAhh6P4qJqDuSukd/muxxmEcpyWsyDJ6b/LjvlAyW6HSxqs7erzp3GJI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975514893309.69783206837394; Fri, 28 Oct 2022 09:45:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSTA-0006hw-QO; Fri, 28 Oct 2022 12:44:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooST0-0004Re-4y; Fri, 28 Oct 2022 12:44:22 -0400 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSSy-0000x4-DR; Fri, 28 Oct 2022 12:44:21 -0400 Received: by mail-oi1-x22e.google.com with SMTP id t10so6714493oib.5; Fri, 28 Oct 2022 09:44:19 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.44.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:44:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8LRbBucj4Y7vI8Jav5c0MpNFLgAoYCOD3t1+Eh8zQLg=; b=hkAf+ixaBeD963VxxLVHruhdtVo2VUZ143uMbiBmYfoeznP2GQ1O7hJdYzxa5fga+c ZQJkHtmYhEmutsoISIRk7SNrtW076/jnJ4Mgl0lKQUXtftUhTfi+ym64zHRvCmVrz78z oe6xxA6+1svoXRzw9ReCLqHtiM22wiTcLeMWkhHodvnepZWly17WefTGHqHtuiRL+53/ o9lUSizwTeWagQ9/6oKl+hWjiWqYTMls/bBM9qUAQ8dxyvpAOhcFFx2MLAo48ivwMMcC DFUxnopRoVZbrh8IHK96RJT7eDHd1foHADOP4Z/EkfXAXVSiqJrl09lxLokBbtDlTX6K ak1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8LRbBucj4Y7vI8Jav5c0MpNFLgAoYCOD3t1+Eh8zQLg=; b=HAldXIM6Cw4NNHaDJNwNLvemN2jYhcOy//1tibaPmBaYnyB1mSeGWsayKOGvuy/Ltv 6m+ONwOL/+nymSF3AWHeAxyJrtwO5Y2W0juWRPWlnSF63s7BudfXpuj+qG5oZwAjybAD Y0INtk3pqbn5UzxPQ+Ip55u4WKPM954iaksOLgyNu6RPiej7SydmA8Z1cMyMZOAmzNLV 1AfwzNBAbC3xAhnKttzhtALEkh2ZBQjtIMCT2DO8zOzJZIAn8ZZc0ZbTMeDn05glyea1 GyRWDk0s0hC/SpiB4fSUox7NYOFtj3nbQkrAq3R+72g5hzSBvb7M73cr56pWgVFE7Gf/ F+MA== X-Gm-Message-State: ACrzQf0obrKhCOKryTzGwBRddLSznxrSq3toiO8dkW+Os7NqfxIZ6e/e LCP0ma0z2kADkMqkl+YXw/woFFsjVsUu1A== X-Google-Smtp-Source: AMsMyM7z1yP0XY/bvmRt0UamKTk7WeKvmlRkHKrfl8/Vz/T8fmTDkjGCYJt8rjzE4i7Q/atkApFeqw== X-Received: by 2002:a05:6808:11c5:b0:34b:75dd:2ee9 with SMTP id p5-20020a05680811c500b0034b75dd2ee9mr159972oiv.285.1666975459057; Fri, 28 Oct 2022 09:44:19 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Bernhard Beschow , BALATON Zoltan , Bin Meng , Daniel Henrique Barboza Subject: [PULL 58/62] docs/system/ppc/ppce500: Use qemu-system-ppc64 across the board(s) Date: Fri, 28 Oct 2022 13:39:47 -0300 Message-Id: <20221028163951.810456-59-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22e; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975516021100003 From: Bernhard Beschow The documentation suggests that there is a qemu-system-ppc32 binary while the 32 bit version is actually just named qemu-system-ppc. Settle on qemu-system-ppc64 which also works for 32 bit machines and causes less clutter in the documentation. Found-by: BALATON Zoltan Suggested-by: Bin Meng Reviewed-by: Daniel Henrique Barboza Signed-off-by: Bernhard Beschow Message-Id: <20221018210146.193159-2-shentey@gmail.com> Signed-off-by: Daniel Henrique Barboza --- docs/system/ppc/ppce500.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/system/ppc/ppce500.rst b/docs/system/ppc/ppce500.rst index ba6bcb7314..7b5eb3c4ee 100644 --- a/docs/system/ppc/ppce500.rst +++ b/docs/system/ppc/ppce500.rst @@ -113,7 +113,7 @@ To boot the 32-bit Linux kernel: =20 .. code-block:: bash =20 - $ qemu-system-ppc{64|32} -M ppce500 -cpu e500mc -smp 4 -m 2G \ + $ qemu-system-ppc64 -M ppce500 -cpu e500mc -smp 4 -m 2G \ -display none -serial stdio \ -kernel vmlinux \ -initrd /path/to/rootfs.cpio \ @@ -154,10 +154,10 @@ interface at PCI address 0.1.0, but we can switch tha= t to an e1000 NIC by: =20 .. code-block:: bash =20 - $ qemu-system-ppc -M ppce500 -smp 4 -m 2G \ - -display none -serial stdio \ - -bios u-boot \ - -nic tap,ifname=3Dtap0,script=3Dno,downscript=3Dno,mod= el=3De1000 + $ qemu-system-ppc64 -M ppce500 -smp 4 -m 2G \ + -display none -serial stdio \ + -bios u-boot \ + -nic tap,ifname=3Dtap0,script=3Dno,downscript=3Dno,m= odel=3De1000 =20 The QEMU ``ppce500`` machine can also dynamically instantiate an eTSEC dev= ice if =E2=80=9C-device eTSEC=E2=80=9D is given to QEMU: --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975496; cv=none; d=zohomail.com; s=zohoarc; b=MPieV8k+ijfonDGzNJS+yIs9ZSzjbtTzX2/DbZz2rIDdli+5+e9So18hjGoqAQ8Ha2sK7CI+We5/7Bv2i42aQedO+LQr2xoZOnNalnIWgXFJKGIJSQoCVZMN0AHJfBS5+R9wy0EySc45T9hKI/oFxLAWgfRFizomQEEuBecTxuU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975496; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ImJzp1hsWEWxn7RDCFu354pjfpcN6AfQsBKVOWXk+vQ=; b=XrvGzTMM76S001D8P3UBhhRkDFTSagvLIAfXdWGPKEzoqXGBKaEWrQI9IvwkvGlEyNyrRSAyYulPQ+xW7fN9B6s3hZx70pA2SaIxK9dcgw5aiGT6Te9nTCCKrxJeFwgi8onsSPL6pod+5ru9L2Y5bgW9U1Rj+KGWc9laJGtjRks= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975496517358.3661700922389; Fri, 28 Oct 2022 09:44:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSTC-00073S-Gl; Fri, 28 Oct 2022 12:44:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooST4-0005Rx-LY; Fri, 28 Oct 2022 12:44:26 -0400 Received: from mail-oa1-x2c.google.com ([2001:4860:4864:20::2c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooST2-00015n-W2; Fri, 28 Oct 2022 12:44:26 -0400 Received: by mail-oa1-x2c.google.com with SMTP id 586e51a60fabf-13bef14ea06so6900299fac.3; Fri, 28 Oct 2022 09:44:24 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.44.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:44:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ImJzp1hsWEWxn7RDCFu354pjfpcN6AfQsBKVOWXk+vQ=; b=h7JJ0wEmfXQQmpQnDCCbTzx83y477qmt9sxE6HvKEO6IuFdns3Nw/uALJO2MFhktSS SXQ/4H1rlVuoEmltq37cgtqf6k5oc5ASaNyRX4djNDxNz/eWXXpr9uUlxkSFtSgh9o/G 2OMh9MPBm2d0Zwi/v/pus0/JwP85/43AmOYjl6p8ZWvTLkAhrWLpWj0Mr4j5t7N9x0MC 2172lFLFZXFOwlkSKFuwcsKwC0gjuMO5/Gz2afWk0GLxHcqLeix7Fdy14aFywt+b5JhX UZdNg9iw4NahhDgZvTP2ohngz94+u/oYZ3Sl+rk5zqyMKIexF5107snBEly0VGoFXMi2 0Sxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ImJzp1hsWEWxn7RDCFu354pjfpcN6AfQsBKVOWXk+vQ=; b=Jhvsvz+SnWf/BgxbulvbLrT4JQLAIutb0X8A4I39IyJKMrob+jniYAhWDiqFXTjfeb QJMBMHFJc8OdQt6CVJ2WuHdZri1S8RRIlQf9Pp6BEjE4wyMrbgOCEb/JgG8A22sakBh1 4k/QD6LRwXJTjhf9VKvO4fst/oY9+2xb4gV9wZtys5Wu/zrOK7X1gQet0z0UUME5lPyW MXemPHILwLmEsU86oFX7K3z/EkAWr7HQ5BTBy3FNCETCgSOgUZ2/J43aWp0e7f/eqEEU wdHOxU789a66zxS5B6n1KzgXtoVItkaKl17OwwEV76z/SM88bnDPG/pQ+HlQJj5zCRC2 rH2Q== X-Gm-Message-State: ACrzQf2oa2ZT7YzJQZVb690CDM92r/GYpM8BIiEppXkni8pW8tuTsQ0y /ELS8Hwre1dDJ/xRz4QFLyLDsyiuuzqamQ== X-Google-Smtp-Source: AMsMyM4vB3zxqskMjPD8kmtHVGGzB6H8JlXB5HnGi4GO1ySmJHot7MMjD/RzvnhKvy2Zyw3wJKRhKQ== X-Received: by 2002:a05:6870:e88a:b0:13b:6e13:a9a5 with SMTP id q10-20020a056870e88a00b0013b6e13a9a5mr31866oan.264.1666975463257; Fri, 28 Oct 2022 09:44:23 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Bernhard Beschow , Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Daniel Henrique Barboza Subject: [PULL 59/62] hw/block/pflash_cfi0{1, 2}: Error out if device length isn't a power of two Date: Fri, 28 Oct 2022 13:39:48 -0300 Message-Id: <20221028163951.810456-60-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2c; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975497893100003 From: Bernhard Beschow According to the JEDEC standard the device length is communicated to an OS as an exponent (power of two). Signed-off-by: Bernhard Beschow Reviewed-by: Bin Meng Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20221018210146.193159-3-shentey@gmail.com> Signed-off-by: Daniel Henrique Barboza --- hw/block/pflash_cfi01.c | 8 ++++++-- hw/block/pflash_cfi02.c | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index 0cbc2fb4cb..9c235bf66e 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -690,7 +690,7 @@ static const MemoryRegionOps pflash_cfi01_ops =3D { .endianness =3D DEVICE_NATIVE_ENDIAN, }; =20 -static void pflash_cfi01_fill_cfi_table(PFlashCFI01 *pfl) +static void pflash_cfi01_fill_cfi_table(PFlashCFI01 *pfl, Error **errp) { uint64_t blocks_per_device, sector_len_per_device, device_len; int num_devices; @@ -708,6 +708,10 @@ static void pflash_cfi01_fill_cfi_table(PFlashCFI01 *p= fl) sector_len_per_device =3D pfl->sector_len / num_devices; } device_len =3D sector_len_per_device * blocks_per_device; + if (!is_power_of_2(device_len)) { + error_setg(errp, "Device size must be a power of two."); + return; + } =20 /* Hardcoded CFI table */ /* Standard "QRY" string */ @@ -865,7 +869,7 @@ static void pflash_cfi01_realize(DeviceState *dev, Erro= r **errp) */ pfl->cmd =3D 0x00; pfl->status =3D 0x80; /* WSM ready */ - pflash_cfi01_fill_cfi_table(pfl); + pflash_cfi01_fill_cfi_table(pfl, errp); } =20 static void pflash_cfi01_system_reset(DeviceState *dev) diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 2a99b286b0..ff2fe154c1 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -880,6 +880,11 @@ static void pflash_cfi02_realize(DeviceState *dev, Err= or **errp) return; } =20 + if (!is_power_of_2(pfl->chip_len)) { + error_setg(errp, "Device size must be a power of two."); + return; + } + memory_region_init_rom_device(&pfl->orig_mem, OBJECT(pfl), &pflash_cfi02_ops, pfl, pfl->name, pfl->chip_len, errp); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975671; cv=none; d=zohomail.com; s=zohoarc; b=b2VQsoP49pFTPeDGYlbaFY94r37pmT90HgC3k629aIFNvuyzSK52OrYhrVRE25EuZeJn5cWF5GMQZNNTyj9hpeHGta5ebRKPSqiEbBTLxIjeJSbyDzAJtOj9J+teptniC/2bSvcGQGkjdZcM6LBbSJBTDGWTnmzkbXQplgjgsDM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975671; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=BMX+Kz19kv4Dbx4HjJwfRCtfz2Lp5Nk/7MnXxUku4sg=; b=Ml7+cFoG4Jluy5uKq/sQe9ho8KC559W4Cd96risRfmvcPfU+S/4niRPdHJ7l8YaMVk1gKJTijGVRMwF5Hl4IyTg5iRiKhMWt+txz1Sdu4r0W3uG1TL8NRNkYT9StmM4SCnpuO55NVkXEdkY5yCRw+WQEylnxIlbVSh7D3qm4Iqo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975671273639.6485490266887; Fri, 28 Oct 2022 09:47:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSTE-0007PF-5w; Fri, 28 Oct 2022 12:44:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooST9-0006PF-BB; Fri, 28 Oct 2022 12:44:31 -0400 Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooST7-000178-Kq; Fri, 28 Oct 2022 12:44:31 -0400 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-13be3ef361dso6852566fac.12; Fri, 28 Oct 2022 09:44:28 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.44.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:44:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BMX+Kz19kv4Dbx4HjJwfRCtfz2Lp5Nk/7MnXxUku4sg=; b=qrc1Dcz4InvrKRr97/XqnnZCPwjGgiIl/UbSjWd6S92c5zbc0ra47FuLtN6qdzYpyd ANaBMOBPjLwms4OMK8kIZqYz5hvxX5yd2N4tKni0uE3wKbqwZoAEoeEQZbj73HmNjwcA vSnodRfPTkbmOSKNYQUaCB2h4gThpV/tjLiawY8Urq6LZ0s+pOqwUYnNQvkrSfecVpyG bfr9Xiohoc0q7103za0zhJoJxoLthmz+5mOCMGU/0xY2YjQLM2MfdkwQONHbiDQr2Eko G/YW7l6J30CyNO6tx6AQYfwlASITj1En7aAe20c7NK7e4VvRF3UdR1TkxQvK1yO75b6W PiEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BMX+Kz19kv4Dbx4HjJwfRCtfz2Lp5Nk/7MnXxUku4sg=; b=J2u9lFhC8B8rEb8QH6dURIQH6d25zFWs9CeXo49jUQy5IMwU3dYplO9MVkVV+WSb5v inHareEayuEGYUYBfZhUoa6qoYF52MORtIg36Al51MkDzSudthJQtuUObzqo/Te1XLgw 703naqm+boXgXg2meisOFy57wpGfy2VhCpCXQY6uVsWYcJA7zhD7KGrZ4wqEDPVN5dee 0gPX88WTtyynpjHitqTVcdf18dbN+ucIexVVK9xTZkk5Ee6LiuF1He1A5ugLgSc6o2/4 U9obRCNO1Z7wNc0KR9A29ZpjonSngwcr2T1YrT53/U+RGEFtl4RWS1NeH2uw2tjtnMF+ ll3w== X-Gm-Message-State: ACrzQf3WOVrreV9bryCLsPWWSzFVuhil/PCBld2sGh8pKMXx+VrxqubI lg397gN1GvT7fvS1DZICkviBWDkIalgIUg== X-Google-Smtp-Source: AMsMyM77pIC4SAiN652KQS12/L+BX6nOPGimGoeuhbeADImak2ZmbbMpcXNofdnseilJoR/OLIp+wA== X-Received: by 2002:a05:6870:4195:b0:13c:8f93:8517 with SMTP id y21-20020a056870419500b0013c8f938517mr17367oac.147.1666975467913; Fri, 28 Oct 2022 09:44:27 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Bernhard Beschow , Bin Meng , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Daniel Henrique Barboza Subject: [PULL 60/62] hw/sd/sdhci-internal: Unexport ESDHC defines Date: Fri, 28 Oct 2022 13:39:49 -0300 Message-Id: <20221028163951.810456-61-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2f; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975672880100005 From: Bernhard Beschow These defines aren't used outside of sdhci.c, so can be defined there. Signed-off-by: Bernhard Beschow Reviewed-by: Bin Meng Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20221018210146.193159-4-shentey@gmail.com> Signed-off-by: Daniel Henrique Barboza --- hw/sd/sdhci-internal.h | 20 -------------------- hw/sd/sdhci.c | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index e8c753d6d1..964570f8e8 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -288,26 +288,6 @@ enum { =20 extern const VMStateDescription sdhci_vmstate; =20 - -#define ESDHC_MIX_CTRL 0x48 - -#define ESDHC_VENDOR_SPEC 0xc0 -#define ESDHC_IMX_FRC_SDCLK_ON (1 << 8) - -#define ESDHC_DLL_CTRL 0x60 - -#define ESDHC_TUNING_CTRL 0xcc -#define ESDHC_TUNE_CTRL_STATUS 0x68 -#define ESDHC_WTMK_LVL 0x44 - -/* Undocumented register used by guests working around erratum ERR004536 */ -#define ESDHC_UNDOCUMENTED_REG27 0x6c - -#define ESDHC_CTRL_4BITBUS (0x1 << 1) -#define ESDHC_CTRL_8BITBUS (0x2 << 1) - -#define ESDHC_PRNSTS_SDSTB (1 << 3) - /* * Default SD/MMC host controller features information, which will be * presented in CAPABILITIES register of generic SD host controller at res= et. diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 0e5e988927..6da5e2c781 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1577,6 +1577,25 @@ static const TypeInfo sdhci_bus_info =3D { =20 /* --- qdev i.MX eSDHC --- */ =20 +#define ESDHC_MIX_CTRL 0x48 + +#define ESDHC_VENDOR_SPEC 0xc0 +#define ESDHC_IMX_FRC_SDCLK_ON (1 << 8) + +#define ESDHC_DLL_CTRL 0x60 + +#define ESDHC_TUNING_CTRL 0xcc +#define ESDHC_TUNE_CTRL_STATUS 0x68 +#define ESDHC_WTMK_LVL 0x44 + +/* Undocumented register used by guests working around erratum ERR004536 */ +#define ESDHC_UNDOCUMENTED_REG27 0x6c + +#define ESDHC_CTRL_4BITBUS (0x1 << 1) +#define ESDHC_CTRL_8BITBUS (0x2 << 1) + +#define ESDHC_PRNSTS_SDSTB (1 << 3) + static uint64_t usdhc_read(void *opaque, hwaddr offset, unsigned size) { SDHCIState *s =3D SYSBUS_SDHCI(opaque); --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975524; cv=none; d=zohomail.com; s=zohoarc; b=kW+hVYWL1tn0BJrXKtRBX6Ynqp7Zp5fHqLEPw3wIebUXdid+9MEPr6IpZ/Ht1tJgWAuy+vDey3EwVbtdEXZ/PxdQpRbpT10Rvf+lxRitVodoQcV6dTmbfs+lH49okmVTM0cAx3lpxPGv6ufWht+HiyglaoYrIEKKbIDCqT8UFfo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975524; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZAeQXdrkMetwm9uqzy/wODWPQSVGVNRUxj1EoJMdwYo=; b=MtemSNdHoaGVwXoKNahHhhTQe2bOllWN8UtEE9Vyf2JoO1xjXvsuc9DN+S8WD5u8WRgNBbvPahwkt8zU2vmg+ubQ8r1LIjUNXI1TbDnA2HdFZewnEKpVXaQjhdSBITyGvUjB0TTqDgSgMdoEK/t66Sb7EW76/SvVWhAwDOIgcoY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975524035767.4101550437281; Fri, 28 Oct 2022 09:45:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSTF-0007go-Gv; Fri, 28 Oct 2022 12:44:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSTD-0007C1-3O; Fri, 28 Oct 2022 12:44:35 -0400 Received: from mail-oi1-x22e.google.com ([2607:f8b0:4864:20::22e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSTB-0000x4-85; Fri, 28 Oct 2022 12:44:34 -0400 Received: by mail-oi1-x22e.google.com with SMTP id t10so6715073oib.5; Fri, 28 Oct 2022 09:44:32 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.44.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:44:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZAeQXdrkMetwm9uqzy/wODWPQSVGVNRUxj1EoJMdwYo=; b=bwzMVXa+52Kwvc7lbJXFc9uidBTk0J0h+nbfdWTjUq1yBgjv/T4YtFpO4kgs3EVPnl hCPb+CgxxHZ7tWr7QmB7070r21UCKVabYEUJrfhB2a1qnjXj2sdk42EkHvqoyLG/vkEc zMrkVg9OlItS68N6gQcH0XFCsrWX/RT5dAuMVrGThYDIEIbHXTej0YrpiZTUnM+lBs2t zIJjsrZqp42Z1aEzOFG0jmvx25J6wSAwASuYA7xCYi0jxeOtaXrM1RKGW5+E6hlEtCH9 TDleKrZ5ekWJseOSxr1MDJKaPxkzUYUVhDbvDsI5DRmIC0ERF5haiyVP5IekqJvF281H 5pCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZAeQXdrkMetwm9uqzy/wODWPQSVGVNRUxj1EoJMdwYo=; b=pR0Xr9RlpyHjtBsq81WAbOH0/qrkVE1RD5tbwUIa5NUFfOgW1RPuTddodFnFr5EyXs VB629pebl8iV/SfFgl1EaZTsG2npUVX1pPUpbFRRiADHFiRNdh9VtsKPpJymoFrRXA+j BrhYdEqEo20qk+GEm/efPiHRxPr/+VmcxWmWIjdhVl0PsukbfHVn6iLAAUY/Wdx4cuXt kpBIFbg5LWv12ppFA3yU9uriQqHngRhO6vz6VFm66APo+nguW4FeOGj9Vna5f+cSTrTI toUmlvu9tfJwyHiuHDuBfkrxEeE+f/+2R+kiuxW2WNEIInq8OB2DRmGaPf/teIRR1+Mf sR1w== X-Gm-Message-State: ACrzQf10ACG9FV0W3qz5ojDG2Vfz6oUDAxuFqFU74HTGx9mBl9aJJvwO +4A8g2L/cnglVTlwhUmnJSsIlEmQbTMQlQ== X-Google-Smtp-Source: AMsMyM6QNQRt1ucvLbhkwuqB3eDChdgZ20PwcQoV0y0wQ4R8svI1e80IgpmgsVGpvzYqVpGhN5Tmqw== X-Received: by 2002:aca:2215:0:b0:354:d4fb:7793 with SMTP id b21-20020aca2215000000b00354d4fb7793mr196111oic.256.1666975471924; Fri, 28 Oct 2022 09:44:31 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Bernhard Beschow , Bin Meng , Daniel Henrique Barboza Subject: [PULL 61/62] hw/sd/sdhci: Rename ESDHC_* defines to USDHC_* Date: Fri, 28 Oct 2022 13:39:50 -0300 Message-Id: <20221028163951.810456-62-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22e; envelope-from=danielhb413@gmail.com; helo=mail-oi1-x22e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975526084100018 Content-Type: text/plain; charset="utf-8" From: Bernhard Beschow The device model's functions start with "usdhc_", so rename the defines accordingly for consistency. Signed-off-by: Bernhard Beschow Reviewed-by: Bin Meng Message-Id: <20221018210146.193159-5-shentey@gmail.com> Signed-off-by: Daniel Henrique Barboza --- hw/sd/sdhci.c | 66 +++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 6da5e2c781..306070c872 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1577,24 +1577,24 @@ static const TypeInfo sdhci_bus_info =3D { =20 /* --- qdev i.MX eSDHC --- */ =20 -#define ESDHC_MIX_CTRL 0x48 +#define USDHC_MIX_CTRL 0x48 =20 -#define ESDHC_VENDOR_SPEC 0xc0 -#define ESDHC_IMX_FRC_SDCLK_ON (1 << 8) +#define USDHC_VENDOR_SPEC 0xc0 +#define USDHC_IMX_FRC_SDCLK_ON (1 << 8) =20 -#define ESDHC_DLL_CTRL 0x60 +#define USDHC_DLL_CTRL 0x60 =20 -#define ESDHC_TUNING_CTRL 0xcc -#define ESDHC_TUNE_CTRL_STATUS 0x68 -#define ESDHC_WTMK_LVL 0x44 +#define USDHC_TUNING_CTRL 0xcc +#define USDHC_TUNE_CTRL_STATUS 0x68 +#define USDHC_WTMK_LVL 0x44 =20 /* Undocumented register used by guests working around erratum ERR004536 */ -#define ESDHC_UNDOCUMENTED_REG27 0x6c +#define USDHC_UNDOCUMENTED_REG27 0x6c =20 -#define ESDHC_CTRL_4BITBUS (0x1 << 1) -#define ESDHC_CTRL_8BITBUS (0x2 << 1) +#define USDHC_CTRL_4BITBUS (0x1 << 1) +#define USDHC_CTRL_8BITBUS (0x2 << 1) =20 -#define ESDHC_PRNSTS_SDSTB (1 << 3) +#define USDHC_PRNSTS_SDSTB (1 << 3) =20 static uint64_t usdhc_read(void *opaque, hwaddr offset, unsigned size) { @@ -1615,11 +1615,11 @@ static uint64_t usdhc_read(void *opaque, hwaddr off= set, unsigned size) hostctl1 =3D SDHC_DMA_TYPE(s->hostctl1) << (8 - 3); =20 if (s->hostctl1 & SDHC_CTRL_8BITBUS) { - hostctl1 |=3D ESDHC_CTRL_8BITBUS; + hostctl1 |=3D USDHC_CTRL_8BITBUS; } =20 if (s->hostctl1 & SDHC_CTRL_4BITBUS) { - hostctl1 |=3D ESDHC_CTRL_4BITBUS; + hostctl1 |=3D USDHC_CTRL_4BITBUS; } =20 ret =3D hostctl1; @@ -1630,21 +1630,21 @@ static uint64_t usdhc_read(void *opaque, hwaddr off= set, unsigned size) =20 case SDHC_PRNSTS: /* Add SDSTB (SD Clock Stable) bit to PRNSTS */ - ret =3D sdhci_read(opaque, offset, size) & ~ESDHC_PRNSTS_SDSTB; + ret =3D sdhci_read(opaque, offset, size) & ~USDHC_PRNSTS_SDSTB; if (s->clkcon & SDHC_CLOCK_INT_STABLE) { - ret |=3D ESDHC_PRNSTS_SDSTB; + ret |=3D USDHC_PRNSTS_SDSTB; } break; =20 - case ESDHC_VENDOR_SPEC: + case USDHC_VENDOR_SPEC: ret =3D s->vendor_spec; break; - case ESDHC_DLL_CTRL: - case ESDHC_TUNE_CTRL_STATUS: - case ESDHC_UNDOCUMENTED_REG27: - case ESDHC_TUNING_CTRL: - case ESDHC_MIX_CTRL: - case ESDHC_WTMK_LVL: + case USDHC_DLL_CTRL: + case USDHC_TUNE_CTRL_STATUS: + case USDHC_UNDOCUMENTED_REG27: + case USDHC_TUNING_CTRL: + case USDHC_MIX_CTRL: + case USDHC_WTMK_LVL: ret =3D 0; break; } @@ -1660,18 +1660,18 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) uint32_t value =3D (uint32_t)val; =20 switch (offset) { - case ESDHC_DLL_CTRL: - case ESDHC_TUNE_CTRL_STATUS: - case ESDHC_UNDOCUMENTED_REG27: - case ESDHC_TUNING_CTRL: - case ESDHC_WTMK_LVL: + case USDHC_DLL_CTRL: + case USDHC_TUNE_CTRL_STATUS: + case USDHC_UNDOCUMENTED_REG27: + case USDHC_TUNING_CTRL: + case USDHC_WTMK_LVL: break; =20 - case ESDHC_VENDOR_SPEC: + case USDHC_VENDOR_SPEC: s->vendor_spec =3D value; switch (s->vendor) { case SDHCI_VENDOR_IMX: - if (value & ESDHC_IMX_FRC_SDCLK_ON) { + if (value & USDHC_IMX_FRC_SDCLK_ON) { s->prnsts &=3D ~SDHC_IMX_CLOCK_GATE_OFF; } else { s->prnsts |=3D SDHC_IMX_CLOCK_GATE_OFF; @@ -1740,12 +1740,12 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) * Second, split "Data Transfer Width" from bits 2 and 1 in to * bits 5 and 1 */ - if (value & ESDHC_CTRL_8BITBUS) { + if (value & USDHC_CTRL_8BITBUS) { hostctl1 |=3D SDHC_CTRL_8BITBUS; } =20 - if (value & ESDHC_CTRL_4BITBUS) { - hostctl1 |=3D ESDHC_CTRL_4BITBUS; + if (value & USDHC_CTRL_4BITBUS) { + hostctl1 |=3D USDHC_CTRL_4BITBUS; } =20 /* @@ -1768,7 +1768,7 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) sdhci_write(opaque, offset, value, size); break; =20 - case ESDHC_MIX_CTRL: + case USDHC_MIX_CTRL: /* * So, when SD/MMC stack in Linux tries to write to "Transfer * Mode Register", ESDHC i.MX quirk code will translate it --=20 2.37.3 From nobody Sat May 18 05:53:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1666975686; cv=none; d=zohomail.com; s=zohoarc; b=WU5D97Z/UT0IPZebtyi94nOILRYrAQCzQD42wpYQATFx389jlNZzDNVRwYhl38RbLLVamrMdnU7gqE4tZIrX72rSPx8vNB7Ps778/xtwiCUDnOxLazcTUqgp4O6u04+RjslHGa0bBfrcF+4TzpAx/lVQRD8CymkmcL0Q5EOnreo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1666975686; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ZuI/sWqN/0+9SVFkIbzFz+H5JQ8dWR3NVwh4Hgt251w=; b=myYXJIpfd2TEcj05w5W67zWbKtBkGfPVZ7upkIvGNt0fAEz1u4wg32sPo41HyJOqlW8LN67MnvVx69QGcE5xjGVS3Z8d+Nv50tBbX2GRQcSLTWGPEwukuvAktcFg47MCrLmY7b92YSBit883sUpYgNd5NEOewFr06JyMMxZiF6w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1666975686810496.5598800330084; Fri, 28 Oct 2022 09:48:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooSTU-0000RT-Nh; Fri, 28 Oct 2022 12:44:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooSTH-0008Bj-Ri; Fri, 28 Oct 2022 12:44:39 -0400 Received: from mail-oa1-x2e.google.com ([2001:4860:4864:20::2e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ooSTF-0001AU-Le; Fri, 28 Oct 2022 12:44:39 -0400 Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-13ba9a4430cso6859839fac.11; Fri, 28 Oct 2022 09:44:36 -0700 (PDT) Received: from balboa.COMFAST ([177.45.165.63]) by smtp.gmail.com with ESMTPSA id s127-20020acaa985000000b00354b7120d60sm1658373oie.52.2022.10.28.09.44.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 09:44:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZuI/sWqN/0+9SVFkIbzFz+H5JQ8dWR3NVwh4Hgt251w=; b=KeRzlHbz6koe+jeYr7K59/nxi/+2luokKqzW5J7sEz+Ur1bKx0GnyZmFxA0s35OtYw kNc3L8ex8Lu2v+EPeOm32K2mCr1W/+1GS7hOjYmHHK9bEb4cu++NORvCpzWgZ3GoBP4Y p20cxafpZpOD2zCOkq4ZZQ5JDpOf1xbCKvZcuPlQmntWxSbx/9Zm+8OF4cJn1sbu3H2o gAE4imWFtI3Z9tDRXxlS+nKzjfuWzytMby3Ei4L0ufoSenbGW1tS70aY+LzxTVSc08CQ Zq1TaFfi1rcY5D34GV6e/l6a83Wq36mgfyr6ChuiiCDoFE6f+7DdHqeOsiXWH7RCJPon p9DQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZuI/sWqN/0+9SVFkIbzFz+H5JQ8dWR3NVwh4Hgt251w=; b=GL9TRsRdq6ObMjXsH2/WqVJJ5cLbJPemNMpUi8HbmAyZNX3uwUgfDBYWg11qyZiqXe Kz1gR0HHSnhgwOdfxLB7mFIulK0ACIp4cItL6+hyAjen8Mu7f/UWE3sSiiTirOc4AKcx wv/gWj0FgcqfMeO3/nSjcn7eELyX/8fHMUrKft4OYU0wlIoEf5R1ffZCCDOtvcwVI0pn OVZhwLW+pRoWPlDYlXtuzRXPVi0WRzYG8uj85qdv2QJcgulhRWHdd+t9A9God3m2iReq IJ3IIGNcmFkBpuxwyD2+6i6Wyk5suvFiHCDmHa9TP/fkWjxDUc4z6/icm0dPlWqwjDBd m3Lg== X-Gm-Message-State: ACrzQf1Z7b3SrIvls9ectY2+5UzjlSbwnIRcoWvMiC1hPpadhKXM16CK tjKDxn7iIHWsP2C07Tw0GaTvt+LIpaEcsg== X-Google-Smtp-Source: AMsMyM6EfaTo5gGmcXOK129Jwy42yk2m4yuKuK9iy2Z/W0lww4s+Iu1lHR75yrJtq/WConiYkya6aQ== X-Received: by 2002:a05:6870:b68d:b0:12d:484a:2643 with SMTP id cy13-20020a056870b68d00b0012d484a2643mr9861490oab.105.1666975475909; Fri, 28 Oct 2022 09:44:35 -0700 (PDT) From: Daniel Henrique Barboza To: qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, stefanha@redhat.com, Bernhard Beschow , Daniel Henrique Barboza , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 62/62] hw/ppc/e500: Implement pflash handling Date: Fri, 28 Oct 2022 13:39:51 -0300 Message-Id: <20221028163951.810456-63-danielhb413@gmail.com> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20221028163951.810456-1-danielhb413@gmail.com> References: <20221028163951.810456-1-danielhb413@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2e; envelope-from=danielhb413@gmail.com; helo=mail-oa1-x2e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1666975689071100001 From: Bernhard Beschow Allows e500 boards to have their root file system reside on flash using only builtin devices located in the eLBC memory region. Note that the flash memory area is only created when a -pflash argument is given, and that the size is determined by the given file. The idea is to put users into control. Signed-off-by: Bernhard Beschow Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20221018210146.193159-6-shentey@gmail.com> [danielhb: use int128_get64() in mmio_size] Signed-off-by: Daniel Henrique Barboza --- docs/system/ppc/ppce500.rst | 15 +++++++ hw/ppc/Kconfig | 1 + hw/ppc/e500.c | 79 +++++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+) diff --git a/docs/system/ppc/ppce500.rst b/docs/system/ppc/ppce500.rst index 7b5eb3c4ee..fa40e57d18 100644 --- a/docs/system/ppc/ppce500.rst +++ b/docs/system/ppc/ppce500.rst @@ -165,3 +165,18 @@ if =E2=80=9C-device eTSEC=E2=80=9D is given to QEMU: .. code-block:: bash =20 -netdev tap,ifname=3Dtap0,script=3Dno,downscript=3Dno,id=3Dnet0 -device = eTSEC,netdev=3Dnet0 + +Root file system on flash drive +------------------------------- + +Rather than using a root file system on ram disk, it is possible to have i= t on +CFI flash. Given an ext2 image whose size must be a power of two, it can b= e used +as follows: + +.. code-block:: bash + + $ qemu-system-ppc64 -M ppce500 -cpu e500mc -smp 4 -m 2G \ + -display none -serial stdio \ + -kernel vmlinux \ + -drive if=3Dpflash,file=3D/path/to/rootfs.ext2,format=3Draw \ + -append "rootwait root=3D/dev/mtdblock0" diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index 791fe78a50..769a1ead1c 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -126,6 +126,7 @@ config E500 select ETSEC select GPIO_MPC8XXX select OPENPIC + select PFLASH_CFI01 select PLATFORM_BUS select PPCE500_PCI select SERIAL diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index 3e950ea3ba..31c54ebb3d 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -23,8 +23,10 @@ #include "e500-ccsr.h" #include "net/net.h" #include "qemu/config-file.h" +#include "hw/block/flash.h" #include "hw/char/serial.h" #include "hw/pci/pci.h" +#include "sysemu/block-backend-io.h" #include "sysemu/sysemu.h" #include "sysemu/kvm.h" #include "sysemu/reset.h" @@ -267,6 +269,31 @@ static void sysbus_device_create_devtree(SysBusDevice = *sbdev, void *opaque) } } =20 +static void create_devtree_flash(SysBusDevice *sbdev, + PlatformDevtreeData *data) +{ + g_autofree char *name =3D NULL; + uint64_t num_blocks =3D object_property_get_uint(OBJECT(sbdev), + "num-blocks", + &error_fatal); + uint64_t sector_length =3D object_property_get_uint(OBJECT(sbdev), + "sector-length", + &error_fatal); + uint64_t bank_width =3D object_property_get_uint(OBJECT(sbdev), + "width", + &error_fatal); + hwaddr flashbase =3D 0; + hwaddr flashsize =3D num_blocks * sector_length; + void *fdt =3D data->fdt; + + name =3D g_strdup_printf("%s/nor@%" PRIx64, data->node, flashbase); + qemu_fdt_add_subnode(fdt, name); + qemu_fdt_setprop_string(fdt, name, "compatible", "cfi-flash"); + qemu_fdt_setprop_sized_cells(fdt, name, "reg", + 1, flashbase, 1, flashsize); + qemu_fdt_setprop_cell(fdt, name, "bank-width", bank_width); +} + static void platform_bus_create_devtree(PPCE500MachineState *pms, void *fdt, const char *mpic) { @@ -276,6 +303,8 @@ static void platform_bus_create_devtree(PPCE500MachineS= tate *pms, uint64_t addr =3D pmc->platform_bus_base; uint64_t size =3D pmc->platform_bus_size; int irq_start =3D pmc->platform_bus_first_irq; + SysBusDevice *sbdev; + bool ambiguous; =20 /* Create a /platform node that we can put all devices into */ =20 @@ -302,6 +331,13 @@ static void platform_bus_create_devtree(PPCE500Machine= State *pms, /* Loop through all dynamic sysbus devices and create nodes for them */ foreach_dynamic_sysbus_device(sysbus_device_create_devtree, &data); =20 + sbdev =3D SYS_BUS_DEVICE(object_resolve_path_type("", TYPE_PFLASH_CFI0= 1, + &ambiguous)); + if (sbdev) { + assert(!ambiguous); + create_devtree_flash(sbdev, &data); + } + g_free(node); } =20 @@ -856,6 +892,7 @@ void ppce500_init(MachineState *machine) unsigned int pci_irq_nrs[PCI_NUM_PINS] =3D {1, 2, 3, 4}; IrqLines *irqs; DeviceState *dev, *mpicdev; + DriveInfo *dinfo; CPUPPCState *firstenv =3D NULL; MemoryRegion *ccsr_addr_space; SysBusDevice *s; @@ -1024,6 +1061,48 @@ void ppce500_init(MachineState *machine) pmc->platform_bus_base, &pms->pbus_dev->mmio); =20 + dinfo =3D drive_get(IF_PFLASH, 0, 0); + if (dinfo) { + BlockBackend *blk =3D blk_by_legacy_dinfo(dinfo); + BlockDriverState *bs =3D blk_bs(blk); + uint64_t mmio_size =3D int128_get64(pms->pbus_dev->mmio.size); + uint64_t size =3D bdrv_getlength(bs); + uint32_t sector_len =3D 64 * KiB; + + if (!is_power_of_2(size)) { + error_report("Size of pflash file must be a power of two."); + exit(1); + } + + if (size > mmio_size) { + error_report("Size of pflash file must not be bigger than %" P= RIu64 + " bytes.", mmio_size); + exit(1); + } + + if (!QEMU_IS_ALIGNED(size, sector_len)) { + error_report("Size of pflash file must be a multiple of %" PRI= u32 + ".", sector_len); + exit(1); + } + + dev =3D qdev_new(TYPE_PFLASH_CFI01); + qdev_prop_set_drive(dev, "drive", blk); + qdev_prop_set_uint32(dev, "num-blocks", size / sector_len); + qdev_prop_set_uint64(dev, "sector-length", sector_len); + qdev_prop_set_uint8(dev, "width", 2); + qdev_prop_set_bit(dev, "big-endian", true); + qdev_prop_set_uint16(dev, "id0", 0x89); + qdev_prop_set_uint16(dev, "id1", 0x18); + qdev_prop_set_uint16(dev, "id2", 0x0000); + qdev_prop_set_uint16(dev, "id3", 0x0); + qdev_prop_set_string(dev, "name", "e500.flash"); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + + memory_region_add_subregion(&pms->pbus_dev->mmio, 0, + pflash_cfi01_get_memory(PFLASH_CFI01(d= ev))); + } + /* * Smart firmware defaults ahead! * --=20 2.37.3