Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp979704ybx; Tue, 5 Nov 2019 08:25:49 -0800 (PST) X-Google-Smtp-Source: APXvYqzxSG5X5ih4vQIy4wDpF8aMkNtUoee4WzpZNvIojqgKkMS4qRWx28krfZDALJEZTVl47q0Q X-Received: by 2002:a17:906:4697:: with SMTP id a23mr12545776ejr.322.1572971148967; Tue, 05 Nov 2019 08:25:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572971148; cv=none; d=google.com; s=arc-20160816; b=IVaTCjXk6308lfEO99LYuV5iyiPYD5Y/6RrRaEwaBV7gIrbX1f0dzKEJQz+m1MYW7b 8cFS9I3DPQf7ffaVzXfo3jUbfDTk62GqfY3BZo2RsBStPkZdhyyS/1SnpiKrCNqGDXgx m9+NvNXq6i+NZW2gUufwTZT7Uvj94fdnCRZZd4UHAQBYdeljs4BK/dkqMQHcaQdOmnvn 8Z2YtKBcczmptgpeBEQwOQJ5QXWZwT4uc9C1xX8rmxUgSbPL4MD3iv2rCA/vmv9bpycx ONGy+Juu7Asmmzseann7IRBY5aUYhTcPNxpaq28iaB/622Tp1zBSFXnnPedkr94IZcOV dKYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=v6XgNgZumjem6HxmAZAuQ7TI5e8NO/wsghYnByfOPFQ=; b=jR2k3jvFtfbsRqZ/gV9p078p4JJGTGQ5Co5t58qXvsM3egg2A5ESZriOq/fJ3rCB0f OKZeln4fVn0+8U6Hr/b2fMS3mBxhghgGvLOzKJfHjQalY21xkK5+YBjpJPeGdw0+omdJ OX4Cxo2OUZijitQa1PzJlhdfE5HhopybmGKNqLOw/T4q31n5ofR0dkdr6ZwIYZK/+s9C 0cKiilO3k0I862THfNv7w7WCXKuKAElOjnHQ6RXVSQxnhbwCUenaPH4QHZgN1FvCBVRa dDSsKmLBlkugRX6kRzcu4oFXEB7j8uMzE00vbpp9ginHIubRHiAKrwLke1ZMualMOLN6 l4cg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h37si9859703eda.249.2019.11.05.08.25.25; Tue, 05 Nov 2019 08:25:48 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390292AbfKEQXl (ORCPT + 99 others); Tue, 5 Nov 2019 11:23:41 -0500 Received: from inca-roads.misterjones.org ([213.251.177.50]:51111 "EHLO inca-roads.misterjones.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390087AbfKEQXO (ORCPT ); Tue, 5 Nov 2019 11:23:14 -0500 Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by cheepnis.misterjones.org with esmtpsa (TLSv1.2:DHE-RSA-AES128-GCM-SHA256:128) (Exim 4.80) (envelope-from ) id 1iS1br-0001q9-5k; Tue, 05 Nov 2019 17:23:11 +0100 From: Marc Zyngier To: linux-kernel@vger.kernel.org Cc: Thomas Gleixner , Jason Cooper , lorenzo.pieralisi@arm.com, Andrew.Murray@arm.com, yuzenghui@huawei.com, Heyi Guo Subject: [PATCH 02/11] irqchip/gic-v3-its: Factor out wait_for_syncr primitive Date: Tue, 5 Nov 2019 16:22:49 +0000 Message-Id: <20191105162258.22214-3-maz@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191105162258.22214-1-maz@kernel.org> References: <20191105162258.22214-1-maz@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-kernel@vger.kernel.org, tglx@linutronix.de, jason@lakedaemon.net, lorenzo.pieralisi@arm.com, Andrew.Murray@arm.com, yuzenghui@huawei.com, guoheyi@huawei.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on cheepnis.misterjones.org); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Waiting for a redistributor to have performed an operation is a common thing to do, and the idiom is already spread around. As we're going to make even more use of this, let's have a primitive that does just that. Signed-off-by: Marc Zyngier Reviewed-by: Zenghui Yu --- drivers/irqchip/irq-gic-v3-its.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index 07d0bde60e16..d71741d302b4 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -1090,6 +1090,12 @@ static void lpi_write_config(struct irq_data *d, u8 clr, u8 set) dsb(ishst); } +static void wait_for_syncr(void __iomem *rdbase) +{ + while (gic_read_lpir(rdbase + GICR_SYNCR) & 1) + cpu_relax(); +} + static void lpi_update_config(struct irq_data *d, u8 clr, u8 set) { struct its_device *its_dev = irq_data_get_irq_chip_data(d); @@ -2773,8 +2779,7 @@ static void its_vpe_db_proxy_move(struct its_vpe *vpe, int from, int to) rdbase = per_cpu_ptr(gic_rdists->rdist, from)->rd_base; gic_write_lpir(vpe->vpe_db_lpi, rdbase + GICR_CLRLPIR); - while (gic_read_lpir(rdbase + GICR_SYNCR) & 1) - cpu_relax(); + wait_for_syncr(rdbase); return; } @@ -2930,8 +2935,7 @@ static void its_vpe_send_inv(struct irq_data *d) rdbase = per_cpu_ptr(gic_rdists->rdist, vpe->col_idx)->rd_base; gic_write_lpir(vpe->vpe_db_lpi, rdbase + GICR_INVLPIR); - while (gic_read_lpir(rdbase + GICR_SYNCR) & 1) - cpu_relax(); + wait_for_syncr(rdbase); } else { its_vpe_send_cmd(vpe, its_send_inv); } @@ -2973,8 +2977,7 @@ static int its_vpe_set_irqchip_state(struct irq_data *d, gic_write_lpir(vpe->vpe_db_lpi, rdbase + GICR_SETLPIR); } else { gic_write_lpir(vpe->vpe_db_lpi, rdbase + GICR_CLRLPIR); - while (gic_read_lpir(rdbase + GICR_SYNCR) & 1) - cpu_relax(); + wait_for_syncr(rdbase); } } else { if (state) -- 2.20.1