From patchwork Thu Sep 7 11:35:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Cameron X-Patchwork-Id: 13376822 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10092EC8750 for ; Thu, 7 Sep 2023 18:49:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232923AbjIGStG (ORCPT ); Thu, 7 Sep 2023 14:49:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33522 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235414AbjIGStE (ORCPT ); Thu, 7 Sep 2023 14:49:04 -0400 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B9ABC4 for ; Thu, 7 Sep 2023 11:49:00 -0700 (PDT) Received: from lhrpeml500005.china.huawei.com (unknown [172.18.147.200]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4RhHFk627Gz6HJlX; Thu, 7 Sep 2023 19:34:18 +0800 (CST) Received: from SecurePC-101-06.china.huawei.com (10.122.247.231) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.31; Thu, 7 Sep 2023 12:35:44 +0100 From: Jonathan Cameron To: , Michael Tsirkin , Fan Ni , CC: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Subject: [PATCH v2 0/3] hw/cxl: Support emulating 4 HDM decoders throughout topology Date: Thu, 7 Sep 2023 12:35:40 +0100 Message-ID: <20230907113543.19760-1-Jonathan.Cameron@huawei.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-Originating-IP: [10.122.247.231] X-ClientProxiedBy: lhrpeml100006.china.huawei.com (7.191.160.224) To lhrpeml500005.china.huawei.com (7.191.163.240) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-cxl@vger.kernel.org v2: - New patch to push previously static inline functions out of cxl_component.h - Add the CXL r3.0 expanded set of decoder counts - making it more obviously why a switch function makes sense. - Use computed difference in HDM1 and HDM0 decoder registers sets instead of 0x20 / 4. - Style changes suggested by Philippe. For initial CXL emulation / kernel driver bring up a single Host-managed Device Memory (HDM) decoder instance was sufficient as it let us test the basic region creation code etc. More complex testing appropriate today requires a more realistic configuration with multiple decoders. The Linux kernel will use separate decoders for each memory type (and shortly per DCD region) and for each interleave set within a memory type or DCD region. 4 decoders are sufficient for most test cases today but we may need to grow these further in future. This patch set already allowed us to identify one kernel bug which is now fixed. https://lore.kernel.org/linux-cxl/168696507968.3590522.14484000711718573626.stgit@dwillia2-xfh.jf.intel.com/ Note that, whilst I'm proposing this series for upstream (based on priorities of what we have out of tree) it hasn't previously been posted so needs review. (I failed to send it out previously) Based on: [PATCH 0/4] hw/cxl: Minor CXL emulation fixes and cleanup Based on: [PATCH v2 0/3] hw/cxl: Add dummy ACPI QTG DSM Based on: Message ID: 20230904132806.6094-1-Jonathan.Cameron@huawei.com Based on: Message ID: 20230904161847.18468-1-Jonathan.Cameron@huawei.com Jonathan Cameron (3): hw/cxl: Push cxl_decoder_count_enc() and cxl_decode_ig() into .c hw/cxl: Add utility functions decoder interleave ways and target count. hw/cxl: Support 4 HDM decoders at all levels of topology include/hw/cxl/cxl_component.h | 30 +++++----- hw/cxl/cxl-component-utils.c | 92 ++++++++++++++++++++++++++---- hw/cxl/cxl-host.c | 65 ++++++++++++++------- hw/mem/cxl_type3.c | 100 +++++++++++++++++++++++---------- 4 files changed, 209 insertions(+), 78 deletions(-)