Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp375988ybl; Thu, 15 Aug 2019 19:33:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqzy0c+7eBqzw060WPhJ4r1hc3lIXYcf6ChQOfHRfngCbVAa+C3H+B1UI7YFw3/jXznzI9db X-Received: by 2002:a17:90a:eb08:: with SMTP id j8mr5183575pjz.72.1565922832754; Thu, 15 Aug 2019 19:33:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565922832; cv=none; d=google.com; s=arc-20160816; b=XhR8+PM6tSs/a5vY7eAOCEQLyKoUx78pUvxeLvlILkxpWzkBH/8Ql8r8Bv+S5auMH+ O5mcXXwB0HdgvzKxNiShAYT+8fowybTQxqGAMh4XMXlOELzLJms2LY86qtXoQgVx/YHX ubJoL8kDPBKbp6Qqwb8levVCkmOT392eBHFg4J5+O7d73CNTzw4GqS6LvCgSlhDj8Ekk PGCtoZmhHEpNjg2tcaXnJL8SqRVDwH2AQxD7s1E2tuMo3pmDM5n1itsMJfA+bbEKPaIT kAAeWE6l+adIRefHrUb/TZx+qifN/8XsWPiGScvZM/TdRSdT1vqfwrz3nAjgDbQ4oyDa uGyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=I8qwvNlhmhRUnsVLX11F0xutDmOe+gGJvvIddxTndko=; b=Me1CPAe1+Kscfd+nGHsEZ0Tsv5hXGGS2EB/1xDWAi/+pICb2TKGdiacI3cHSPph37n hcs49QKXRAUwJxfNJ1sBN8T1v2ZCIohHSI+pefF1+X2LKpxr9fuprK6INUyPq7+gmnrp FEePFYmPqQptPsjiXuFJTdqfU9jLtGRDPVTIWT6NjmCKl6zTZhEVX8/Ln2YdLcmyi/2x lmcuYovWGbXmijywRqB6JiChL5asU4CTPmbz8bdWr3/w4+g7uHvAzhC3/vru+n8sxPc7 9p37JghsOzHVh2tO02vlKEhAR5FXoolGwAjkLqVorsDB4Ajui04+srEfRZ5KXGkgckLS SyHg== 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 143si2878681pgc.479.2019.08.15.19.33.36; Thu, 15 Aug 2019 19:33:52 -0700 (PDT) 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726435AbfHPCdB (ORCPT + 99 others); Thu, 15 Aug 2019 22:33:01 -0400 Received: from mga09.intel.com ([134.134.136.24]:24671 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726245AbfHPCdB (ORCPT ); Thu, 15 Aug 2019 22:33:01 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Aug 2019 19:32:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,391,1559545200"; d="scan'208";a="194894466" Received: from genxtest-ykzhao.sh.intel.com ([10.239.143.71]) by fmsmga001.fm.intel.com with ESMTP; 15 Aug 2019 19:32:58 -0700 From: Zhao Yakui To: x86@kernel.org, linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org Cc: Zhao Yakui Subject: [RFC PATCH 00/15] acrn: add the ACRN driver module Date: Fri, 16 Aug 2019 10:25:41 +0800 Message-Id: <1565922356-4488-1-git-send-email-yakui.zhao@intel.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ACRN is a flexible, lightweight reference hypervisor, built with real-time and safety-criticality in mind, optimized to streamline embedded development through an open source platform. It is built for embedded IOT with small footprint and real-time features. More details can be found in https://projectacrn.org/ This is the patch set that add the ACRN driver module on ACRN guest, which acts as the router to communciate with ACRN hypervisor. The user-space applications can use the provided ACRN ioctls to interact with ACRN hypervisor through different hypercalls. After the ACRN module is loaded, the device file of /dev/acrn_hsm can be accessed in user-space. It includes the management of virtualized CPU/memory/ device/interrupt/MMIO emulation for other ACRN guest. The first three patches are the changes under x86/acrn, which adds the required APIs for the driver and reports the X2APIC caps. The remaining patches add the ACRN driver module, which accepts the ioctl from user-space and then communicate with the low-level ACRN hypervisor by using hypercall. Zhao Yakui (15): x86/acrn: Report X2APIC for ACRN guest x86/acrn: Add two APIs to add/remove driver-specific upcall ISR handler x86/acrn: Add hypercall for ACRN guest drivers/acrn: add the basic framework of acrn char device driver drivers/acrn: add driver-specific hypercall for ACRN_HSM drivers/acrn: add the support of querying ACRN api version drivers/acrn: add acrn vm/vcpu management for ACRN_HSM char device drivers/acrn: add VM memory management for ACRN char device drivers/acrn: add passthrough device support drivers/acrn: add interrupt injection support drivers/acrn: add the support of handling emulated ioreq drivers/acrn: add driver-specific IRQ handle to dispatch IO_REQ request drivers/acrn: add service to obtain Power data transition drivers/acrn: add the support of irqfd and eventfd drivers/acrn: add the support of offline SOS cpu arch/x86/include/asm/acrn.h | 57 ++ arch/x86/kernel/cpu/acrn.c | 20 +- drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/acrn/Kconfig | 18 + drivers/staging/acrn/Makefile | 9 + drivers/staging/acrn/acrn_dev.c | 727 +++++++++++++++++++++++ drivers/staging/acrn/acrn_drv_internal.h | 186 ++++++ drivers/staging/acrn/acrn_hv_defs.h | 65 +++ drivers/staging/acrn/acrn_hypercall.c | 136 +++++ drivers/staging/acrn/acrn_hypercall.h | 132 +++++ drivers/staging/acrn/acrn_ioeventfd.c | 407 +++++++++++++ drivers/staging/acrn/acrn_ioreq.c | 937 ++++++++++++++++++++++++++++++ drivers/staging/acrn/acrn_irqfd.c | 339 +++++++++++ drivers/staging/acrn/acrn_mm.c | 227 ++++++++ drivers/staging/acrn/acrn_mm_hugetlb.c | 281 +++++++++ drivers/staging/acrn/acrn_vm_mngt.c | 116 ++++ include/linux/acrn/acrn_drv.h | 200 +++++++ include/uapi/linux/acrn/acrn_common_def.h | 201 +++++++ include/uapi/linux/acrn/acrn_ioctl_defs.h | 345 +++++++++++ 20 files changed, 4400 insertions(+), 6 deletions(-) create mode 100644 drivers/staging/acrn/Kconfig create mode 100644 drivers/staging/acrn/Makefile create mode 100644 drivers/staging/acrn/acrn_dev.c create mode 100644 drivers/staging/acrn/acrn_drv_internal.h create mode 100644 drivers/staging/acrn/acrn_hv_defs.h create mode 100644 drivers/staging/acrn/acrn_hypercall.c create mode 100644 drivers/staging/acrn/acrn_hypercall.h create mode 100644 drivers/staging/acrn/acrn_ioeventfd.c create mode 100644 drivers/staging/acrn/acrn_ioreq.c create mode 100644 drivers/staging/acrn/acrn_irqfd.c create mode 100644 drivers/staging/acrn/acrn_mm.c create mode 100644 drivers/staging/acrn/acrn_mm_hugetlb.c create mode 100644 drivers/staging/acrn/acrn_vm_mngt.c create mode 100644 include/linux/acrn/acrn_drv.h create mode 100644 include/uapi/linux/acrn/acrn_common_def.h create mode 100644 include/uapi/linux/acrn/acrn_ioctl_defs.h -- 2.7.4