From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E14FB64E for ; Mon, 12 Aug 2024 01:00:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723424452; cv=none; b=iIRDzjeVNNLMFoVxHsvysywdydn+k+djBWtzkKvd/E8FX8I2wpF5CgLhV6iSQyrdgwtDq5Uj/PxMXpeZg561L26RoXTpG37dtjvdcWbt6+e5Fbge43KbdKGrVUEny4NE64B3Ecp4afxhVDyXzN+r7SPCk4+paDvIMD1ONivjXD8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723424452; c=relaxed/simple; bh=xZxlyDcMOh+rhR2esklH3kbgHbWDV2ZIJQfnY0eZOqw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=lS/Dy9egSFUqoH7EmdNaQpiasgwbwBY0Ci1NFlQfkw5Y4JrxmtRvEZ8nTSHKyF6n9o+jsZGf5oWt7hFhP/jfNw93+jeRbPTUd25m/Xtu48N2PPg5vAeW+z0IdOUunESPA30+pbft4MxzUlglLSEx8W+5nrrz7FjaVUShb62v2FU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=R+gJrra2; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="R+gJrra2" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-7105043330aso3053843b3a.0 for ; Sun, 11 Aug 2024 18:00:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1723424450; x=1724029250; darn=lists.linux.dev; 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=zGfeskz8g19r+OqajKxPNYjNNE+F0wltIvoajFyWVok=; b=R+gJrra2l1CE+bOwqK7YQIJbgBMst8XnkLffknyUjlrz/ZtvIDaPNz/bw5R4dtOtfY Ig00sBHz99AenoXHvL+/siq2an8rN/cpchH8nh1bo0N9vqn/t0Gqm8C3lc2RrI1Az3sH B9Bl/l7E0nZaGIxrkw1W1oqAz9WQD9AdVoW2LaBhR1W1uEDuwm6u4jngEZyGC2WEtK+y 1tYYUZDGhyTOi0MDClv71KcoXYk7Ks83h7qp04I2ADkNq0NNC+58vDyjmTEKynwxKsYZ o9L7pamBXJJD1NY4DpOkpw+BXlUB9+RpKa99H0vTnXCxJPrzyelBUIBrMWeUKup4U7Br 1FMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723424450; x=1724029250; 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=zGfeskz8g19r+OqajKxPNYjNNE+F0wltIvoajFyWVok=; b=sXuFFso6uV9DyMoqTuWGHA9TIqmDI6epkQjbbX1RXnSSm7QmQsnF3eLX8+NfSt8GIf +BNOGIgRrHR4MNbgLw/Q4F52gxlofPJ5NpPb1HUxVQp1ECud62dvdAdFlc8pOQU/NuRP x2PVnZpQz9FU1HkS5oOvp3U8eDn6YZ3Erj9A7+yOxHhhR2PPdK904dXuBbgs60r9bD+j 05/Xo39hsXG/jxWRQB7VI01NcmjthydsE/exl20cBVO32zflBeNlT7IxZCfQFO/0G5Gh y5EDBXScr+fi7/aRq6uEdokOjUsUDQy9jGDBbeHSs3u00Wxl8bR6Vv4a7ZovM+p94EvV 5G4Q== X-Forwarded-Encrypted: i=1; AJvYcCWzq2Oo/dMZqReHJWMRkhk+jZ9MI6M9WwAuPH/3wlROhrYWu1if0I3nZpBrI7bNmT/mhH7S1MHf3qiZIJJ+fzCq2PIoiynBIm4ORnxU X-Gm-Message-State: AOJu0YxVy9mHFSA7hfNsCjk2/5o0HJdp6yRAmgxAWOAW1+Q2WnxOrP+D ukOFzmgxt0iC+dazSi4p5IsjqCG6vJS7HLajlcA3ARGg/4d+GWVaEmzSRBhLUYQ= X-Google-Smtp-Source: AGHT+IE3q8lKgHgWLAwxE/0Wiss9V/UMieO99InX6OgVwr4G4I59tEn3alleuzimlu24LFWs915ICg== X-Received: by 2002:a05:6a00:2da1:b0:710:7efe:a870 with SMTP id d2e1a72fcca58-710dcaeb509mr5600452b3a.19.1723424450430; Sun, 11 Aug 2024 18:00:50 -0700 (PDT) Received: from sunil-pc.tail07344b.ts.net ([106.51.198.16]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7c3dbe8cbdcsm3074062a12.61.2024.08.11.18.00.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Aug 2024 18:00:49 -0700 (PDT) From: Sunil V L To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-acpi@vger.kernel.org, acpica-devel@lists.linux.dev Cc: Will Deacon , Paul Walmsley , Palmer Dabbelt , Albert Ou , "Rafael J . Wysocki" , Len Brown , Bjorn Helgaas , Anup Patel , Thomas Gleixner , Samuel Holland , Robert Moore , Conor Dooley , Haibo Xu , Andrew Jones , Atish Kumar Patra , Drew Fustini , Sunil V L , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= Subject: [PATCH v8 11/17] ACPI: RISC-V: Initialize GSI mapping structures Date: Mon, 12 Aug 2024 06:29:23 +0530 Message-ID: <20240812005929.113499-12-sunilvl@ventanamicro.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240812005929.113499-1-sunilvl@ventanamicro.com> References: <20240812005929.113499-1-sunilvl@ventanamicro.com> Precedence: bulk X-Mailing-List: acpica-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=cp1252 Content-Transfer-Encoding: 8bit RISC-V has PLIC and APLIC in MADT as well as namespace devices. Initialize the list of those structures using MADT and namespace devices to create mapping between the ACPI handle and the GSI ranges. This will be used later to add dependencies. Signed-off-by: Sunil V L Tested-by: Björn Töpel --- arch/riscv/include/asm/irq.h | 22 ++++++ drivers/acpi/riscv/init.c | 2 + drivers/acpi/riscv/init.h | 4 + drivers/acpi/riscv/irq.c | 147 +++++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+) create mode 100644 drivers/acpi/riscv/init.h diff --git a/arch/riscv/include/asm/irq.h b/arch/riscv/include/asm/irq.h index 8e10a94430a2..44a0b128c602 100644 --- a/arch/riscv/include/asm/irq.h +++ b/arch/riscv/include/asm/irq.h @@ -16,4 +16,26 @@ void riscv_set_intc_hwnode_fn(struct fwnode_handle *(*fn)(void)); struct fwnode_handle *riscv_get_intc_hwnode(void); +#ifdef CONFIG_ACPI + +enum riscv_irqchip_type { + ACPI_RISCV_IRQCHIP_INTC = 0x00, + ACPI_RISCV_IRQCHIP_IMSIC = 0x01, + ACPI_RISCV_IRQCHIP_PLIC = 0x02, + ACPI_RISCV_IRQCHIP_APLIC = 0x03, +}; + +int riscv_acpi_get_gsi_info(struct fwnode_handle *fwnode, u32 *gsi_base, + u32 *id, u32 *nr_irqs, u32 *nr_idcs); +struct fwnode_handle *riscv_acpi_get_gsi_domain_id(u32 gsi); + +#else +static inline int riscv_acpi_get_gsi_info(struct fwnode_handle *fwnode, u32 *gsi_base, + u32 *id, u32 *nr_irqs, u32 *nr_idcs) +{ + return 0; +} + +#endif /* CONFIG_ACPI */ + #endif /* _ASM_RISCV_IRQ_H */ diff --git a/drivers/acpi/riscv/init.c b/drivers/acpi/riscv/init.c index a875a76aa44c..5ef97905a727 100644 --- a/drivers/acpi/riscv/init.c +++ b/drivers/acpi/riscv/init.c @@ -5,7 +5,9 @@ */ #include +#include "init.h" void __init acpi_riscv_init(void) { + riscv_acpi_init_gsi_mapping(); } diff --git a/drivers/acpi/riscv/init.h b/drivers/acpi/riscv/init.h new file mode 100644 index 000000000000..0b9a07e4031f --- /dev/null +++ b/drivers/acpi/riscv/init.h @@ -0,0 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#include + +void __init riscv_acpi_init_gsi_mapping(void); diff --git a/drivers/acpi/riscv/irq.c b/drivers/acpi/riscv/irq.c index 835eb6eccd53..9028787c73a7 100644 --- a/drivers/acpi/riscv/irq.c +++ b/drivers/acpi/riscv/irq.c @@ -6,6 +6,21 @@ #include #include +#include + +#include "init.h" + +struct riscv_ext_intc_list { + acpi_handle handle; + u32 gsi_base; + u32 nr_irqs; + u32 nr_idcs; + u32 id; + u32 type; + struct list_head list; +}; + +LIST_HEAD(ext_intc_list); static int irqchip_cmp_func(const void *in0, const void *in1) { @@ -31,3 +46,135 @@ void arch_sort_irqchip_probe(struct acpi_probe_entry *ap_head, int nr) return; sort(ape, nr, sizeof(*ape), irqchip_cmp_func, NULL); } + +static acpi_status riscv_acpi_update_gsi_handle(u32 gsi_base, acpi_handle handle) +{ + struct riscv_ext_intc_list *ext_intc_element; + struct list_head *i, *tmp; + + list_for_each_safe(i, tmp, &ext_intc_list) { + ext_intc_element = list_entry(i, struct riscv_ext_intc_list, list); + if (gsi_base == ext_intc_element->gsi_base) { + ext_intc_element->handle = handle; + return AE_OK; + } + } + + return AE_NOT_FOUND; +} + +int riscv_acpi_get_gsi_info(struct fwnode_handle *fwnode, u32 *gsi_base, + u32 *id, u32 *nr_irqs, u32 *nr_idcs) +{ + struct riscv_ext_intc_list *ext_intc_element; + struct list_head *i; + + list_for_each(i, &ext_intc_list) { + ext_intc_element = list_entry(i, struct riscv_ext_intc_list, list); + if (ext_intc_element->handle == ACPI_HANDLE_FWNODE(fwnode)) { + *gsi_base = ext_intc_element->gsi_base; + *id = ext_intc_element->id; + *nr_irqs = ext_intc_element->nr_irqs; + if (nr_idcs) + *nr_idcs = ext_intc_element->nr_idcs; + + return 0; + } + } + + return -ENODEV; +} + +struct fwnode_handle *riscv_acpi_get_gsi_domain_id(u32 gsi) +{ + struct riscv_ext_intc_list *ext_intc_element; + struct acpi_device *adev; + struct list_head *i; + + list_for_each(i, &ext_intc_list) { + ext_intc_element = list_entry(i, struct riscv_ext_intc_list, list); + if (gsi >= ext_intc_element->gsi_base && + gsi < (ext_intc_element->gsi_base + ext_intc_element->nr_irqs)) { + adev = acpi_fetch_acpi_dev(ext_intc_element->handle); + if (!adev) + return NULL; + + return acpi_fwnode_handle(adev); + } + } + + return NULL; +} + +static int __init riscv_acpi_register_ext_intc(u32 gsi_base, u32 nr_irqs, u32 nr_idcs, + u32 id, u32 type) +{ + struct riscv_ext_intc_list *ext_intc_element; + + ext_intc_element = kzalloc(sizeof(*ext_intc_element), GFP_KERNEL); + if (!ext_intc_element) + return -ENOMEM; + + ext_intc_element->gsi_base = gsi_base; + ext_intc_element->nr_irqs = nr_irqs; + ext_intc_element->nr_idcs = nr_idcs; + ext_intc_element->id = id; + list_add_tail(&ext_intc_element->list, &ext_intc_list); + return 0; +} + +static acpi_status __init riscv_acpi_create_gsi_map(acpi_handle handle, u32 level, + void *context, void **return_value) +{ + acpi_status status; + u64 gbase; + + if (!acpi_has_method(handle, "_GSB")) { + acpi_handle_err(handle, "_GSB method not found\n"); + return AE_ERROR; + } + + status = acpi_evaluate_integer(handle, "_GSB", NULL, &gbase); + if (ACPI_FAILURE(status)) { + acpi_handle_err(handle, "failed to evaluate _GSB method\n"); + return status; + } + + status = riscv_acpi_update_gsi_handle((u32)gbase, handle); + if (ACPI_FAILURE(status)) { + acpi_handle_err(handle, "failed to find the GSI mapping entry\n"); + return status; + } + + return AE_OK; +} + +static int __init riscv_acpi_aplic_parse_madt(union acpi_subtable_headers *header, + const unsigned long end) +{ + struct acpi_madt_aplic *aplic = (struct acpi_madt_aplic *)header; + + return riscv_acpi_register_ext_intc(aplic->gsi_base, aplic->num_sources, aplic->num_idcs, + aplic->id, ACPI_RISCV_IRQCHIP_APLIC); +} + +static int __init riscv_acpi_plic_parse_madt(union acpi_subtable_headers *header, + const unsigned long end) +{ + struct acpi_madt_plic *plic = (struct acpi_madt_plic *)header; + + return riscv_acpi_register_ext_intc(plic->gsi_base, plic->num_irqs, 0, + plic->id, ACPI_RISCV_IRQCHIP_PLIC); +} + +void __init riscv_acpi_init_gsi_mapping(void) +{ + /* There can be either PLIC or APLIC */ + if (acpi_table_parse_madt(ACPI_MADT_TYPE_PLIC, riscv_acpi_plic_parse_madt, 0) > 0) { + acpi_get_devices("RSCV0001", riscv_acpi_create_gsi_map, NULL, NULL); + return; + } + + if (acpi_table_parse_madt(ACPI_MADT_TYPE_APLIC, riscv_acpi_aplic_parse_madt, 0) > 0) + acpi_get_devices("RSCV0002", riscv_acpi_create_gsi_map, NULL, NULL); +} -- 2.43.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9C745C531DD for ; Mon, 12 Aug 2024 02:15:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cUhVOEJW+gviIq2J16umecpM/a2nlaMQy11KSaZ52JY=; b=ijBSx0zcbqjebi gYhHz1KtopXfT5bAqHpwwkLZLumyrBJrxwxGTDYPlGeghFt9tAAngP9wOzf6HyA+xTwS7OlVJGp5M fKtFqiKTMDEkAdDxZPTVdZbpyvkowUlQ0UyjD4LP8YgzxCEn/cgNAxEOJhTpXJ3SL85rZlJVNtGeD nsKhPe7Lg2+6UZ/3oagXxjGUe4AFWWzGDWScqLszMd+MLSL5N/8zQMm3bUrcuE7E7kL6yZBmiitiq MF6elTq0oXR5gI3XFYZWlMDVRw7LcjKs0PPHXyhOoBFIFEu/tYEP6l8FiHFU3as8tZdmKLQEAleQt QU1hFO2DlIxk2Mveoavg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sdKae-0000000GgGT-3ApB; Mon, 12 Aug 2024 02:15:20 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sdJQZ-0000000GaFo-37eF for linux-riscv@lists.infradead.org; Mon, 12 Aug 2024 01:00:54 +0000 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-70d2b921c48so2799177b3a.1 for ; Sun, 11 Aug 2024 18:00:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1723424450; x=1724029250; darn=lists.infradead.org; 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=zGfeskz8g19r+OqajKxPNYjNNE+F0wltIvoajFyWVok=; b=NtpN9wxCAFZWhc/0DKq5mhoIKXwKUU7cc2PMKwAsV8g18LSKK9uZaziXKoLKLAUq5w xF7QDpNFh8pa5khaW+lbcqjs6cfV3yQKzRiI1bghxZh+DjFEeaSg+zxk8FnVpSGCRiRI ACOeh85EjOlcMBb9omVamI7yV/61oexXeKGPJ0x90zjuppNSxv86CnnJmZ47qSYSRGWE 5ySR7izxIrfT6FeKGsOqq6BD5GJB4JVF4M4b8kgUXRy0qtu3pxJZ+nltNtU7KBr01sDZ uUANGKr0Oe5jN60oFegiF9z/FPgMEquxx+aa6d2sFPsYOQyKvFjpEAOq7l9VWGgML552 Fxqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723424450; x=1724029250; 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=zGfeskz8g19r+OqajKxPNYjNNE+F0wltIvoajFyWVok=; b=KgPp81VvQ83snPeb15WlC6Q2YjKTtBp8rOmfzVR6AdV7xS7W1/Paevtlykgswn7b9G jLcyUONwZj8ebUJYiu7WNwlM/SopE351+F8bqzSLaL5k7uDKNQFQG3vukWtFT13o+WH6 AMqHTGr0BTeZJSblNpLLRJQZ4bNYnLdfKZ4vZlDoYnV9UEbYzU4suDDi+1QRHfKuCp20 WoT3NRCuHqzl3j1d2OyNQuMbmIjsv6i6q8TvOL/fy4qA1HId+SeLn8BX3kU/BbKBo32V nzsokJfzHvigD4U2AD0x1kpwIHeJHIUOb45noQO1mq1PX1tsQAWNACxsR8deG2XVfSEb bhFw== X-Forwarded-Encrypted: i=1; AJvYcCWRLp7Cq+uOLYGdJIOwJtdq8oD49A8r2VXCZ4/8Ez2lO1OQ1KOWXI4JavKJLJ+HxeHhTGMNGYbe8nF9XSrdCsJm7h9EWajvRKuJXJYAYZcx X-Gm-Message-State: AOJu0YwOk3E47xcOht7C0r/6mwSibHw/i/1LSKp7MMep16Cb26Y7G4RX deNFEvPoYhebCzKqXT32ClVZCP0CL+hApxzfAS1HzNwVIdsF6pJFEjwbezF6teo= X-Google-Smtp-Source: AGHT+IE3q8lKgHgWLAwxE/0Wiss9V/UMieO99InX6OgVwr4G4I59tEn3alleuzimlu24LFWs915ICg== X-Received: by 2002:a05:6a00:2da1:b0:710:7efe:a870 with SMTP id d2e1a72fcca58-710dcaeb509mr5600452b3a.19.1723424450430; Sun, 11 Aug 2024 18:00:50 -0700 (PDT) Received: from sunil-pc.tail07344b.ts.net ([106.51.198.16]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7c3dbe8cbdcsm3074062a12.61.2024.08.11.18.00.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Aug 2024 18:00:49 -0700 (PDT) From: Sunil V L To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-acpi@vger.kernel.org, acpica-devel@lists.linux.dev Subject: [PATCH v8 11/17] ACPI: RISC-V: Initialize GSI mapping structures Date: Mon, 12 Aug 2024 06:29:23 +0530 Message-ID: <20240812005929.113499-12-sunilvl@ventanamicro.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240812005929.113499-1-sunilvl@ventanamicro.com> References: <20240812005929.113499-1-sunilvl@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240811_180051_941959_5E10F073 X-CRM114-Status: GOOD ( 20.09 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Albert Ou , Haibo Xu , "Rafael J . Wysocki" , Anup Patel , Atish Kumar Patra , Robert Moore , Samuel Holland , Conor Dooley , Palmer Dabbelt , Drew Fustini , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Paul Walmsley , Bjorn Helgaas , Thomas Gleixner , Andrew Jones , Will Deacon , Len Brown Content-Type: text/plain; charset="cp1252" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org UklTQy1WIGhhcyBQTElDIGFuZCBBUExJQyBpbiBNQURUIGFzIHdlbGwgYXMgbmFtZXNwYWNlIGRl dmljZXMuCkluaXRpYWxpemUgdGhlIGxpc3Qgb2YgdGhvc2Ugc3RydWN0dXJlcyB1c2luZyBNQURU IGFuZCBuYW1lc3BhY2UgZGV2aWNlcwp0byBjcmVhdGUgbWFwcGluZyBiZXR3ZWVuIHRoZSBBQ1BJ IGhhbmRsZSBhbmQgdGhlIEdTSSByYW5nZXMuIFRoaXMgd2lsbApiZSB1c2VkIGxhdGVyIHRvIGFk ZCBkZXBlbmRlbmNpZXMuCgpTaWduZWQtb2ZmLWJ5OiBTdW5pbCBWIEwgPHN1bmlsdmxAdmVudGFu YW1pY3JvLmNvbT4KVGVzdGVkLWJ5OiBCasO2cm4gVMO2cGVsIDxiam9ybkByaXZvc2luYy5jb20+ Ci0tLQogYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9pcnEuaCB8ICAyMiArKysrKysKIGRyaXZlcnMv YWNwaS9yaXNjdi9pbml0LmMgICAgfCAgIDIgKwogZHJpdmVycy9hY3BpL3Jpc2N2L2luaXQuaCAg ICB8ICAgNCArCiBkcml2ZXJzL2FjcGkvcmlzY3YvaXJxLmMgICAgIHwgMTQ3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDE3NSBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9hY3BpL3Jpc2N2L2luaXQuaAoKZGlmZiAt LWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaXJxLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUv YXNtL2lycS5oCmluZGV4IDhlMTBhOTQ0MzBhMi4uNDRhMGIxMjhjNjAyIDEwMDY0NAotLS0gYS9h cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lycS5oCisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20v aXJxLmgKQEAgLTE2LDQgKzE2LDI2IEBAIHZvaWQgcmlzY3Zfc2V0X2ludGNfaHdub2RlX2ZuKHN0 cnVjdCBmd25vZGVfaGFuZGxlICooKmZuKSh2b2lkKSk7CiAKIHN0cnVjdCBmd25vZGVfaGFuZGxl ICpyaXNjdl9nZXRfaW50Y19od25vZGUodm9pZCk7CiAKKyNpZmRlZiBDT05GSUdfQUNQSQorCitl bnVtIHJpc2N2X2lycWNoaXBfdHlwZSB7CisJQUNQSV9SSVNDVl9JUlFDSElQX0lOVEMJCT0gMHgw MCwKKwlBQ1BJX1JJU0NWX0lSUUNISVBfSU1TSUMJPSAweDAxLAorCUFDUElfUklTQ1ZfSVJRQ0hJ UF9QTElDCQk9IDB4MDIsCisJQUNQSV9SSVNDVl9JUlFDSElQX0FQTElDCT0gMHgwMywKK307CisK K2ludCByaXNjdl9hY3BpX2dldF9nc2lfaW5mbyhzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2Rl LCB1MzIgKmdzaV9iYXNlLAorCQkJICAgIHUzMiAqaWQsIHUzMiAqbnJfaXJxcywgdTMyICpucl9p ZGNzKTsKK3N0cnVjdCBmd25vZGVfaGFuZGxlICpyaXNjdl9hY3BpX2dldF9nc2lfZG9tYWluX2lk KHUzMiBnc2kpOworCisjZWxzZQorc3RhdGljIGlubGluZSBpbnQgcmlzY3ZfYWNwaV9nZXRfZ3Np X2luZm8oc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwgdTMyICpnc2lfYmFzZSwKKwkJCQkJ ICB1MzIgKmlkLCB1MzIgKm5yX2lycXMsIHUzMiAqbnJfaWRjcykKK3sKKwlyZXR1cm4gMDsKK30K KworI2VuZGlmIC8qIENPTkZJR19BQ1BJICovCisKICNlbmRpZiAvKiBfQVNNX1JJU0NWX0lSUV9I ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcmlzY3YvaW5pdC5jIGIvZHJpdmVycy9hY3Bp L3Jpc2N2L2luaXQuYwppbmRleCBhODc1YTc2YWE0NGMuLjVlZjk3OTA1YTcyNyAxMDA2NDQKLS0t IGEvZHJpdmVycy9hY3BpL3Jpc2N2L2luaXQuYworKysgYi9kcml2ZXJzL2FjcGkvcmlzY3YvaW5p dC5jCkBAIC01LDcgKzUsOSBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+CisjaW5j bHVkZSAiaW5pdC5oIgogCiB2b2lkIF9faW5pdCBhY3BpX3Jpc2N2X2luaXQodm9pZCkKIHsKKwly aXNjdl9hY3BpX2luaXRfZ3NpX21hcHBpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNw aS9yaXNjdi9pbml0LmggYi9kcml2ZXJzL2FjcGkvcmlzY3YvaW5pdC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGI5YTA3ZTQwMzFmCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9hY3BpL3Jpc2N2L2luaXQuaApAQCAtMCwwICsxLDQgQEAKKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+ CisKK3ZvaWQgX19pbml0IHJpc2N2X2FjcGlfaW5pdF9nc2lfbWFwcGluZyh2b2lkKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvYWNwaS9yaXNjdi9pcnEuYyBiL2RyaXZlcnMvYWNwaS9yaXNjdi9pcnEu YwppbmRleCA4MzVlYjZlY2NkNTMuLjkwMjg3ODdjNzNhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9h Y3BpL3Jpc2N2L2lycS5jCisrKyBiL2RyaXZlcnMvYWNwaS9yaXNjdi9pcnEuYwpAQCAtNiw2ICs2 LDIxIEBACiAKICNpbmNsdWRlIDxsaW51eC9hY3BpLmg+CiAjaW5jbHVkZSA8bGludXgvc29ydC5o PgorI2luY2x1ZGUgPGxpbnV4L2lycS5oPgorCisjaW5jbHVkZSAiaW5pdC5oIgorCitzdHJ1Y3Qg cmlzY3ZfZXh0X2ludGNfbGlzdCB7CisJYWNwaV9oYW5kbGUJCWhhbmRsZTsKKwl1MzIJCQlnc2lf YmFzZTsKKwl1MzIJCQlucl9pcnFzOworCXUzMgkJCW5yX2lkY3M7CisJdTMyCQkJaWQ7CisJdTMy CQkJdHlwZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkCWxpc3Q7Cit9OworCitMSVNUX0hFQUQoZXh0X2lu dGNfbGlzdCk7CiAKIHN0YXRpYyBpbnQgaXJxY2hpcF9jbXBfZnVuYyhjb25zdCB2b2lkICppbjAs IGNvbnN0IHZvaWQgKmluMSkKIHsKQEAgLTMxLDMgKzQ2LDEzNSBAQCB2b2lkIGFyY2hfc29ydF9p cnFjaGlwX3Byb2JlKHN0cnVjdCBhY3BpX3Byb2JlX2VudHJ5ICphcF9oZWFkLCBpbnQgbnIpCiAJ CXJldHVybjsKIAlzb3J0KGFwZSwgbnIsIHNpemVvZigqYXBlKSwgaXJxY2hpcF9jbXBfZnVuYywg TlVMTCk7CiB9CisKK3N0YXRpYyBhY3BpX3N0YXR1cyByaXNjdl9hY3BpX3VwZGF0ZV9nc2lfaGFu ZGxlKHUzMiBnc2lfYmFzZSwgYWNwaV9oYW5kbGUgaGFuZGxlKQoreworCXN0cnVjdCByaXNjdl9l eHRfaW50Y19saXN0ICpleHRfaW50Y19lbGVtZW50OworCXN0cnVjdCBsaXN0X2hlYWQgKmksICp0 bXA7CisKKwlsaXN0X2Zvcl9lYWNoX3NhZmUoaSwgdG1wLCAmZXh0X2ludGNfbGlzdCkgeworCQll eHRfaW50Y19lbGVtZW50ID0gbGlzdF9lbnRyeShpLCBzdHJ1Y3QgcmlzY3ZfZXh0X2ludGNfbGlz dCwgbGlzdCk7CisJCWlmIChnc2lfYmFzZSA9PSBleHRfaW50Y19lbGVtZW50LT5nc2lfYmFzZSkg eworCQkJZXh0X2ludGNfZWxlbWVudC0+aGFuZGxlID0gaGFuZGxlOworCQkJcmV0dXJuIEFFX09L OworCQl9CisJfQorCisJcmV0dXJuIEFFX05PVF9GT1VORDsKK30KKworaW50IHJpc2N2X2FjcGlf Z2V0X2dzaV9pbmZvKHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsIHUzMiAqZ3NpX2Jhc2Us CisJCQkgICAgdTMyICppZCwgdTMyICpucl9pcnFzLCB1MzIgKm5yX2lkY3MpCit7CisJc3RydWN0 IHJpc2N2X2V4dF9pbnRjX2xpc3QgKmV4dF9pbnRjX2VsZW1lbnQ7CisJc3RydWN0IGxpc3RfaGVh ZCAqaTsKKworCWxpc3RfZm9yX2VhY2goaSwgJmV4dF9pbnRjX2xpc3QpIHsKKwkJZXh0X2ludGNf ZWxlbWVudCA9IGxpc3RfZW50cnkoaSwgc3RydWN0IHJpc2N2X2V4dF9pbnRjX2xpc3QsIGxpc3Qp OworCQlpZiAoZXh0X2ludGNfZWxlbWVudC0+aGFuZGxlID09IEFDUElfSEFORExFX0ZXTk9ERShm d25vZGUpKSB7CisJCQkqZ3NpX2Jhc2UgPSBleHRfaW50Y19lbGVtZW50LT5nc2lfYmFzZTsKKwkJ CSppZCA9IGV4dF9pbnRjX2VsZW1lbnQtPmlkOworCQkJKm5yX2lycXMgPSBleHRfaW50Y19lbGVt ZW50LT5ucl9pcnFzOworCQkJaWYgKG5yX2lkY3MpCisJCQkJKm5yX2lkY3MgPSBleHRfaW50Y19l bGVtZW50LT5ucl9pZGNzOworCisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworCXJldHVybiAtRU5P REVWOworfQorCitzdHJ1Y3QgZndub2RlX2hhbmRsZSAqcmlzY3ZfYWNwaV9nZXRfZ3NpX2RvbWFp bl9pZCh1MzIgZ3NpKQoreworCXN0cnVjdCByaXNjdl9leHRfaW50Y19saXN0ICpleHRfaW50Y19l bGVtZW50OworCXN0cnVjdCBhY3BpX2RldmljZSAqYWRldjsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpp OworCisJbGlzdF9mb3JfZWFjaChpLCAmZXh0X2ludGNfbGlzdCkgeworCQlleHRfaW50Y19lbGVt ZW50ID0gbGlzdF9lbnRyeShpLCBzdHJ1Y3QgcmlzY3ZfZXh0X2ludGNfbGlzdCwgbGlzdCk7CisJ CWlmIChnc2kgPj0gZXh0X2ludGNfZWxlbWVudC0+Z3NpX2Jhc2UgJiYKKwkJICAgIGdzaSA8IChl eHRfaW50Y19lbGVtZW50LT5nc2lfYmFzZSArIGV4dF9pbnRjX2VsZW1lbnQtPm5yX2lycXMpKSB7 CisJCQlhZGV2ID0gYWNwaV9mZXRjaF9hY3BpX2RldihleHRfaW50Y19lbGVtZW50LT5oYW5kbGUp OworCQkJaWYgKCFhZGV2KQorCQkJCXJldHVybiBOVUxMOworCisJCQlyZXR1cm4gYWNwaV9md25v ZGVfaGFuZGxlKGFkZXYpOworCQl9CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBp bnQgX19pbml0IHJpc2N2X2FjcGlfcmVnaXN0ZXJfZXh0X2ludGModTMyIGdzaV9iYXNlLCB1MzIg bnJfaXJxcywgdTMyIG5yX2lkY3MsCisJCQkJCSAgICAgICB1MzIgaWQsIHUzMiB0eXBlKQorewor CXN0cnVjdCByaXNjdl9leHRfaW50Y19saXN0ICpleHRfaW50Y19lbGVtZW50OworCisJZXh0X2lu dGNfZWxlbWVudCA9IGt6YWxsb2Moc2l6ZW9mKCpleHRfaW50Y19lbGVtZW50KSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFleHRfaW50Y19lbGVtZW50KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWV4dF9p bnRjX2VsZW1lbnQtPmdzaV9iYXNlID0gZ3NpX2Jhc2U7CisJZXh0X2ludGNfZWxlbWVudC0+bnJf aXJxcyA9IG5yX2lycXM7CisJZXh0X2ludGNfZWxlbWVudC0+bnJfaWRjcyA9IG5yX2lkY3M7CisJ ZXh0X2ludGNfZWxlbWVudC0+aWQgPSBpZDsKKwlsaXN0X2FkZF90YWlsKCZleHRfaW50Y19lbGVt ZW50LT5saXN0LCAmZXh0X2ludGNfbGlzdCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBhY3Bp X3N0YXR1cyBfX2luaXQgcmlzY3ZfYWNwaV9jcmVhdGVfZ3NpX21hcChhY3BpX2hhbmRsZSBoYW5k bGUsIHUzMiBsZXZlbCwKKwkJCQkJCSAgICB2b2lkICpjb250ZXh0LCB2b2lkICoqcmV0dXJuX3Zh bHVlKQoreworCWFjcGlfc3RhdHVzIHN0YXR1czsKKwl1NjQgZ2Jhc2U7CisKKwlpZiAoIWFjcGlf aGFzX21ldGhvZChoYW5kbGUsICJfR1NCIikpIHsKKwkJYWNwaV9oYW5kbGVfZXJyKGhhbmRsZSwg Il9HU0IgbWV0aG9kIG5vdCBmb3VuZFxuIik7CisJCXJldHVybiBBRV9FUlJPUjsKKwl9CisKKwlz dGF0dXMgPSBhY3BpX2V2YWx1YXRlX2ludGVnZXIoaGFuZGxlLCAiX0dTQiIsIE5VTEwsICZnYmFz ZSk7CisJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CisJCWFjcGlfaGFuZGxlX2VycihoYW5k bGUsICJmYWlsZWQgdG8gZXZhbHVhdGUgX0dTQiBtZXRob2RcbiIpOworCQlyZXR1cm4gc3RhdHVz OworCX0KKworCXN0YXR1cyA9IHJpc2N2X2FjcGlfdXBkYXRlX2dzaV9oYW5kbGUoKHUzMilnYmFz ZSwgaGFuZGxlKTsKKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKKwkJYWNwaV9oYW5kbGVf ZXJyKGhhbmRsZSwgImZhaWxlZCB0byBmaW5kIHRoZSBHU0kgbWFwcGluZyBlbnRyeVxuIik7CisJ CXJldHVybiBzdGF0dXM7CisJfQorCisJcmV0dXJuIEFFX09LOworfQorCitzdGF0aWMgaW50IF9f aW5pdCByaXNjdl9hY3BpX2FwbGljX3BhcnNlX21hZHQodW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFk ZXJzICpoZWFkZXIsCisJCQkJCSAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZW5kKQoreworCXN0 cnVjdCBhY3BpX21hZHRfYXBsaWMgKmFwbGljID0gKHN0cnVjdCBhY3BpX21hZHRfYXBsaWMgKilo ZWFkZXI7CisKKwlyZXR1cm4gcmlzY3ZfYWNwaV9yZWdpc3Rlcl9leHRfaW50YyhhcGxpYy0+Z3Np X2Jhc2UsIGFwbGljLT5udW1fc291cmNlcywgYXBsaWMtPm51bV9pZGNzLAorCQkJCQkgICAgYXBs aWMtPmlkLCBBQ1BJX1JJU0NWX0lSUUNISVBfQVBMSUMpOworfQorCitzdGF0aWMgaW50IF9faW5p dCByaXNjdl9hY3BpX3BsaWNfcGFyc2VfbWFkdCh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMg KmhlYWRlciwKKwkJCQkJICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlzdHJ1Y3Qg YWNwaV9tYWR0X3BsaWMgKnBsaWMgPSAoc3RydWN0IGFjcGlfbWFkdF9wbGljICopaGVhZGVyOwor CisJcmV0dXJuIHJpc2N2X2FjcGlfcmVnaXN0ZXJfZXh0X2ludGMocGxpYy0+Z3NpX2Jhc2UsIHBs aWMtPm51bV9pcnFzLCAwLAorCQkJCQkgICAgcGxpYy0+aWQsIEFDUElfUklTQ1ZfSVJRQ0hJUF9Q TElDKTsKK30KKwordm9pZCBfX2luaXQgcmlzY3ZfYWNwaV9pbml0X2dzaV9tYXBwaW5nKHZvaWQp Cit7CisJLyogVGhlcmUgY2FuIGJlIGVpdGhlciBQTElDIG9yIEFQTElDICovCisJaWYgKGFjcGlf dGFibGVfcGFyc2VfbWFkdChBQ1BJX01BRFRfVFlQRV9QTElDLCByaXNjdl9hY3BpX3BsaWNfcGFy c2VfbWFkdCwgMCkgPiAwKSB7CisJCWFjcGlfZ2V0X2RldmljZXMoIlJTQ1YwMDAxIiwgcmlzY3Zf YWNwaV9jcmVhdGVfZ3NpX21hcCwgTlVMTCwgTlVMTCk7CisJCXJldHVybjsKKwl9CisKKwlpZiAo YWNwaV90YWJsZV9wYXJzZV9tYWR0KEFDUElfTUFEVF9UWVBFX0FQTElDLCByaXNjdl9hY3BpX2Fw bGljX3BhcnNlX21hZHQsIDApID4gMCkKKwkJYWNwaV9nZXRfZGV2aWNlcygiUlNDVjAwMDIiLCBy aXNjdl9hY3BpX2NyZWF0ZV9nc2lfbWFwLCBOVUxMLCBOVUxMKTsKK30KLS0gCjIuNDMuMAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2 IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK