Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp375974ybl; Thu, 15 Aug 2019 19:33:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqzHIu1lL4WXfial82RvTk2CmLNazyo3Nz0sGSR7SOE+H3sxa4D3PBfK23ERsk4gvjZPO34n X-Received: by 2002:a17:902:1a7:: with SMTP id b36mr6914710plb.115.1565922832144; 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=I0MFPShFYy1nfCWVmDmjj+37kCFvk5UAH+SgPyMyJ5xswGx9fHEkj6v+sqwXVbS5ks eIKm0hQGz4hGqtvWA2tVF/WqAXHEi6YbyLhBRP4rILABVC6tPM7snFExqLpUnfa+hwrQ zRUxmPTgBzsEhJJMB/zfq8wjraUH1uGCXrYF9GzkPFjs2Gtg1mo2Yc3AN0+xE4Y4zvQI jlkuw8IfwlvXkqVxNQuljObDIppc6dWrRu3w1UOGxE9FiPgJ/3Lp9Zdb7mnaupIt5XL/ 9AH2WQllUXgFK7T6RJJXHO6y6paMR8M2Fuc4+4CDWMFXRGUfYU3hnsjuv4N06G6H5amb VaNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=FjRVbYkb9L1H9Bnkce/+Km836P7si6EOK0vrOjIqEmg=; b=D4Pxpn/GCbBHRV5m0L1wLeSlBBxizLqhpIn+5Uc4EvB0NtwenloxyKbgEUG5VxsiWg OJ/JnZeqJ4+OBli8R44d8wLoJ0SyoB0kA4mGq4a1I6Ln0TF96K8DWjdA53uW2HL49yPi 0QAdRv7DWl86n+pRGad/5zPDkRMHy/D813i2n/zhyozTgCvizWVYUh2IVd2T6cjwOIXj ivy1z0kaEXELYtzeiQMw+4HOi6YOZlx7bAlzVEIMMR58nqUGy7yMqVblX1x0XqsC64eH F87+eegG1AbHmtjEv7uquMcIv/yBDolNSeZRF574n9rG/a9Vawq9i/pCKB9Pg8AdONOf 9FGQ== 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 j192si2865004pge.393.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 S1726554AbfHPCdE (ORCPT + 99 others); Thu, 15 Aug 2019 22:33:04 -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 S1726245AbfHPCdC (ORCPT ); Thu, 15 Aug 2019 22:33:02 -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:33:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,391,1559545200"; d="scan'208";a="194894474" Received: from genxtest-ykzhao.sh.intel.com ([10.239.143.71]) by fmsmga001.fm.intel.com with ESMTP; 15 Aug 2019 19:33:01 -0700 From: Zhao Yakui To: x86@kernel.org, linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org Cc: Zhao Yakui , Jason Chen CJ Subject: [RFC PATCH 02/15] x86/acrn: Add two APIs to add/remove driver-specific upcall ISR handler Date: Fri, 16 Aug 2019 10:25:43 +0800 Message-Id: <1565922356-4488-3-git-send-email-yakui.zhao@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1565922356-4488-1-git-send-email-yakui.zhao@intel.com> References: <1565922356-4488-1-git-send-email-yakui.zhao@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org After the ACRN hypervisor sends the upcall notify interrupt, the upcall ISR handler will be served. Now almost nothing is handled in upcall ISR handler except acking EOI. The driver-specific ISR handler is registered by the driver, which helps to handle the real notification from ACRN hypervisor. This is similar to that in XEN/HyperV. Co-developed-by: Jason Chen CJ Signed-off-by: Jason Chen CJ Signed-off-by: Zhao Yakui --- arch/x86/include/asm/acrn.h | 3 +++ arch/x86/kernel/cpu/acrn.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/arch/x86/include/asm/acrn.h b/arch/x86/include/asm/acrn.h index 4adb13f..857e6244 100644 --- a/arch/x86/include/asm/acrn.h +++ b/arch/x86/include/asm/acrn.h @@ -8,4 +8,7 @@ extern void acrn_hv_callback_vector(void); #endif extern void acrn_hv_vector_handler(struct pt_regs *regs); + +extern void acrn_setup_intr_irq(void (*handler)(void)); +extern void acrn_remove_intr_irq(void); #endif /* _ASM_X86_ACRN_H */ diff --git a/arch/x86/kernel/cpu/acrn.c b/arch/x86/kernel/cpu/acrn.c index 95db5c4..a1ce52a 100644 --- a/arch/x86/kernel/cpu/acrn.c +++ b/arch/x86/kernel/cpu/acrn.c @@ -56,6 +56,18 @@ __visible void __irq_entry acrn_hv_vector_handler(struct pt_regs *regs) set_irq_regs(old_regs); } +void acrn_setup_intr_irq(void (*handler)(void)) +{ + acrn_intr_handler = handler; +} +EXPORT_SYMBOL_GPL(acrn_setup_intr_irq); + +void acrn_remove_intr_irq(void) +{ + acrn_intr_handler = NULL; +} +EXPORT_SYMBOL_GPL(acrn_remove_intr_irq); + const __initconst struct hypervisor_x86 x86_hyper_acrn = { .name = "ACRN", .detect = acrn_detect, -- 2.7.4