Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp216990pxb; Tue, 23 Feb 2021 23:35:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJzSLQz5cLoZzBOcVJyNHPAG3V/TmFsXafFv1cUbtvmxUdz9SYgmMij5HdrNW0LeKm4/emUE X-Received: by 2002:aa7:c843:: with SMTP id g3mr32188209edt.228.1614152125947; Tue, 23 Feb 2021 23:35:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614152125; cv=none; d=google.com; s=arc-20160816; b=BHuH30T5lO/JzgnMCCyVYz8hr3artZTgBkIqsXq+NEfhcYccAFqr6IcETWtfFsTgcR 7QUbooaXW6sdFqpOnKLpuk8yVc79i+hpNX9zjDdBdxYyXLYkr4VWiD0NqelrytVFOE7E rWjUiGM/AadfY3tRxqiLM/8cdtOW1zeBdktx5FSzrQC0LZwi6qMOeKamCOo5jFyd+1vn 5HZ4SKXXxjsWMNSyu/A4t0bxJEaY7wNRBj77E7FRzBcS/Ct/wTU4sRNjL0Nr/3vhygri IgZQGQRN/+xKL1ryxsA0bbKSvkp5aJHTbG1TqouyWiP5dWY1lMCqrfxYI+h2fnvMXETk NquA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=r0/3ywDnAOQsjA4thisasGEmCGYC07XpqLCZIebqfNw=; b=Q89WwLYPWQehVYl3wZqYVM8+wxZdStbhiUoJ4c+En7IXybgPdicgMXqVTGVJj4zuu2 3SYl3xvB1vhL7X3dMqYZPP37DThu6s4SALW5u7nPKBUXZNNbrsAQ7lRXE8RtIUn52SaE HVf+7SnWCSh911yCSH9m9PfPdnPLb1qArW40/Fv363JWUKhsm488W2gyJf9T3enu59bA DuSdxTSIgYEsmaxOdTGe8dN9kXZHvXgy9jfhwCJQ+z8JERITcI6AqmoCFs6rU5mil6fb 9YQlt3xC9joskeY7qie3/bfJpIEsFrBAh/l2aZ1mqxBapGxvlUinOmhuxDgHnU0JhR3K qAQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel-com.20150623.gappssmtp.com header.s=20150623 header.b="tCz/1aer"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z11si586138edc.454.2021.02.23.23.34.53; Tue, 23 Feb 2021 23:35:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@intel-com.20150623.gappssmtp.com header.s=20150623 header.b="tCz/1aer"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232866AbhBXELK (ORCPT + 99 others); Tue, 23 Feb 2021 23:11:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36038 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232870AbhBXELE (ORCPT ); Tue, 23 Feb 2021 23:11:04 -0500 Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1B515C061786 for ; Tue, 23 Feb 2021 20:10:23 -0800 (PST) Received: by mail-ej1-x631.google.com with SMTP id d8so803847ejc.4 for ; Tue, 23 Feb 2021 20:10:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=r0/3ywDnAOQsjA4thisasGEmCGYC07XpqLCZIebqfNw=; b=tCz/1aerhGbC2OIOScvpy/jeAp6NooTZ19XXPr4uuVgGRolbLZJx9RW7RLnAMplFZM tV/rtPtFj8NkrjKNHoIkdXr0pBCHkPMZot536PLRF2E0v5uzXWteUUm+ug38AP5Y4Tfu CFe9VXj0SKJaRmWpejqefdZnUyJKQCoezS67a397L3YsaMlFqsH9cg95kDVFcUxr0GQY bMrR2GIozSJIPKKZglc6KVyK2QEdh4N+ywq2nbMh19LhRdYzgF+VG6UrfgfTt1dJzycz M8aT9jhHDlRKuZDUmWdwjydWcbNgbRXL/2ePxjSXKXRqw3QObhgxIWT/MhAoEK37WAuE kXsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=r0/3ywDnAOQsjA4thisasGEmCGYC07XpqLCZIebqfNw=; b=Etmiu6zwUVnQTwn/2Z1r84lcTsaJ7LTXTT8zcP+1cvKucM17CNlXg4Lw2IdOP8zSjK yTDDGvj4xhca6MYmwk7fsU1DaefJC1XbLYT5gNXriEM+cVSrJWnUHbdrWvh2fY6hbBBO vXQn5jGxbkXJDeynEhwP2uIoq7YvqLpG4Qb8zA1gpEGGwEW5HyHGahXojUehiVgg7ys6 HWgRvJnRycpWq1oZoG7Xk+KY2p1zlylcJyUwp8M4tzdvzWRE9vPcrMKQq4boB4r6ChWA DZRrrNb5rHBBdHoHSeAxlISmv7LE9KxTBURcNeUj89d3Iy3CRgfdO5hj6QVfm75xOpaS ftmA== X-Gm-Message-State: AOAM533SgR9ae4o/c35gjUZxjQ+CkGXx0C0buhJJXwrdYYfN9L5hQBD4 VarTXktk8ko4d/X4zfrmq/SuG1zBpF19+bJS6Gv2uQ== X-Received: by 2002:a17:906:2818:: with SMTP id r24mr22949127ejc.472.1614139821753; Tue, 23 Feb 2021 20:10:21 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Dan Williams Date: Tue, 23 Feb 2021 20:10:17 -0800 Message-ID: Subject: Re: [GIT PULL] Compute Express Linux (CXL) for v5.12-rc1 To: Linus Torvalds Cc: linux-cxl@vger.kernel.org, Linux PCI , Linux Kernel Mailing List , linux-nvdimm , Linux ACPI Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As much as I'd love to be working on "Compute Express Linux" the subject should have read "Compute Express Link". On Tue, Feb 23, 2021 at 8:05 PM Dan Williams wrote: > > Hi Linus, please pull from: > > git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/cxl-for-5.12 > > ...to receive an initial driver for CXL 2.0 Memory Devices. Technical > details are in the tag message and Documentation/. I am taking this > through nvdimm.git this first cycle until the cxl.git repository and > maintainer team can be set up on git.kernel.org. > > In terms of why merge this initial driver now, it establishes just > enough functionality to enumerate these devices and issue all > administrative commands. It sets a v5.12 baseline to develop the more > complicated higher order functionality like memory device > interleaving, persistent memory support, and hotplug which entangle > with ACPI, LIBNVDIMM, and PCI. > > The focus of this release is establishing the ioctl UAPI for the > management commands. Similar to NVME there are a set of standard > commands as well as the possibility for vendor specific commands. > Unlike the NVME driver the CXL driver does not enable vendor specific > command functionality by default. This conservatism is out of concern > for the fact that CXL interleaves memory across devices and implements > host memory. The system integrity implications of some commands are > more severe than NVME and vendor specific functionality is mostly > unauditable. This will be an ongoing topic of discussion with the > wider CXL community for next few months. > > The driver has been developed in the open since November against a > work-in-progress QEMU emulation of the CXL device model. That QEMU > effort has recently attracted contributions from multiple hardware > vendors. > > The driver has appeared in -next. It collected some initial static > analysis fixes and build-robot reports, but all quiet in -next for the > past week. > > A list of review tags that arrived after the branch for -next was cut > is appended to the tag message below. > > --- > > The following changes since commit 1048ba83fb1c00cd24172e23e8263972f6b5d9ac: > > Linux 5.11-rc6 (2021-01-31 13:50:09 -0800) > > are available in the Git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/cxl-for-5.12 > > for you to fetch changes up to 88ff5d466c0250259818f3153dbdc4af1f8615dd: > > cxl/mem: Fix potential memory leak (2021-02-22 14:44:39 -0800) > > ---------------------------------------------------------------- > cxl for 5.12 > > Introduce an initial driver for CXL 2.0 Type-3 Memory Devices. CXL is > Compute Express Link which released the 2.0 specification in November. > The Linux relevant changes in CXL 2.0 are support for an OS to > dynamically assign address space to memory devices, support for > switches, persistent memory, and hotplug. A Type-3 Memory Device is a > PCI enumerated device presenting the CXL Memory Device Class Code and > implementing the CXL.mem protocol. CXL.mem allows device to advertise > CPU and I/O coherent memory to the system, i.e. typical "System RAM" and > "Persistent Memory" in Linux /proc/iomem terms. > > In addition to the CXL.mem fast path there is an administrative command > hardware mailbox interface for maintenance and provisioning. It is this > command interface that is the focus of the initial driver. With this > driver a CXL device that is mapped by the BIOS can be administered by > Linux. Linux support for CXL PMEM and dynamic CXL address space > management are to be implemented post v5.12. > > 4cdadfd5e0a7 cxl/mem: Introduce a driver for CXL-2.0-Type-3 endpoints > Reviewed-by: Konrad Rzeszutek Wilk > > 8adaf747c9f0 cxl/mem: Find device capabilities > Reviewed-by: Jonathan Cameron > > b39cb1052a5c cxl/mem: Register CXL memX devices > Reviewed-by: Jonathan Cameron > > 13237183c735 cxl/mem: Add a "RAW" send command > Reviewed-by: Konrad Rzeszutek Wilk > > 472b1ce6e9d6 cxl/mem: Enable commands via CEL > Reviewed-by: Konrad Rzeszutek Wilk > > 57ee605b976c cxl/mem: Add set of informational commands > Reviewed-by: Konrad Rzeszutek Wilk > > ---------------------------------------------------------------- > Ben Widawsky (7): > cxl/mem: Find device capabilities > cxl/mem: Add basic IOCTL interface > cxl/mem: Add a "RAW" send command > cxl/mem: Enable commands via CEL > cxl/mem: Add set of informational commands > MAINTAINERS: Add maintainers of the CXL driver > cxl/mem: Fix potential memory leak > > Dan Carpenter (1): > cxl/mem: Return -EFAULT if copy_to_user() fails > > Dan Williams (2): > cxl/mem: Introduce a driver for CXL-2.0-Type-3 endpoints > cxl/mem: Register CXL memX devices > > .clang-format | 1 + > Documentation/ABI/testing/sysfs-bus-cxl | 26 + > Documentation/driver-api/cxl/index.rst | 12 + > Documentation/driver-api/cxl/memory-devices.rst | 46 + > Documentation/driver-api/index.rst | 1 + > Documentation/userspace-api/ioctl/ioctl-number.rst | 1 + > MAINTAINERS | 11 + > drivers/Kconfig | 1 + > drivers/Makefile | 1 + > drivers/cxl/Kconfig | 53 + > drivers/cxl/Makefile | 7 + > drivers/cxl/bus.c | 29 + > drivers/cxl/cxl.h | 95 ++ > drivers/cxl/mem.c | 1552 ++++++++++++++++++++ > drivers/cxl/pci.h | 31 + > include/linux/pci_ids.h | 1 + > include/uapi/linux/cxl_mem.h | 172 +++ > 17 files changed, 2040 insertions(+) > create mode 100644 Documentation/ABI/testing/sysfs-bus-cxl > create mode 100644 Documentation/driver-api/cxl/index.rst > create mode 100644 Documentation/driver-api/cxl/memory-devices.rst > create mode 100644 drivers/cxl/Kconfig > create mode 100644 drivers/cxl/Makefile > create mode 100644 drivers/cxl/bus.c > create mode 100644 drivers/cxl/cxl.h > create mode 100644 drivers/cxl/mem.c > create mode 100644 drivers/cxl/pci.h > create mode 100644 include/uapi/linux/cxl_mem.h