[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN PATCH v1] arm: introduce kconfig options to disable hypercalls


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Sergiy Kibrik <sergiy_kibrik@xxxxxxxx>
  • Date: Wed, 18 Dec 2024 11:04:43 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=joj87V4dVBXCPzIgqm8KkspSGXIaqaxBIO9gnzwpP2A=; b=p421KYIr44nUGqOpOZPyOCuvk1LKvSBHnhhGVb010c26PC9mP5PhyeYShERQ5AwR3ooIBeUyAk13YOL30TP+5rgnw39105DGeRm+Bw14OwqP3M8pCSu3qHzo/ZvPnpyhDmETG9i89vzvGn8rhsxjlWbyUS08otPeOqHCHOjAjwum7wa/jU5Ed3FpxMCRRARJLXY4Lmg58LG4tTWYVWtmy0lqCZZqELuuDXWP0s6lSZf8hgFtNajSj4gWJvZnHgRX89VqlzZnNywefNvEIfMoOVLxZY+duMtD8PSEhnsi+wrV/swzm7M8VlTGF4hGibcCCp08vDjUlTPQbnUGtLZomQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CxqLOaWRt4Z3dLzjIX16zByUcSBt7/4f2jQX4pd0lx4J4JnJCWL3ufgFAxMyTY67r/mAddXab0tcDo7TXz0uq1Pr280WzUepOMB3d9taBU3pWQuvkbRLlNvD5T5THlDxD3RigLR0iinNNeD4u9ACr5uVYiH4ztjz6SpCEL2xrgQRO0c4F+FGOT1G2FW+gWnXscBIV3YP7A7NrAEHuVlT1Z+hQGr5H6ksJDaOqccGYIzyM7mLvLdTpcznz6PdvMnY0XBrsBC95CByRVNuNtbSmF/p+JLxZ4bHFJXvBZbY39cwSojHDY3j7xRio5wASo4IO0HiTBdhriZpFKxLa740+A==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=epam.com;
  • Cc: Stefano Stabellini <stefano.stabellini@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • Delivery-date: Wed, 18 Dec 2024 09:05:00 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

17.12.24 15:00, Jan Beulich:
On 16.12.2024 12:43, Sergiy Kibrik wrote:
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -516,4 +516,31 @@ config TRACEBUFFER
          to be collected at run time for debugging or performance analysis.
          Memory and execution overhead when not active is minimal.
+menu "Supported hypercall interfaces"
+       visible if DOM0LESS_BOOT && EXPERT
+
+config SYSCTL
+       bool "Enable sysctl hypercall"
+       default y
+
+config DOMCTL
+       bool "Enable domctl hypercalls"
+       default y
+
+config HVM_OP
+       bool "Enable HVM hypercalls"
+       depends on HVM
+       default y
+
+config PLATFORM_HYP
+       bool "Enable platform hypercalls"
+       depends on !PV_SHIM_EXCLUSIVE

Any reason you don't do the shim related conversion also for domctl and
sysctl?


you're right, I'll do it in v2

Much like you have HVM_OP, may I suggest PLATFORM_OP here and ...

+       default y
+
+config PHYSDEVOP
+       bool "Enable physdev hypercall"
+       default y

... PHYSDEV_OP here?


yes, sure

--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1053,7 +1053,9 @@ int domain_kill(struct domain *d)
          d->is_dying = DOMDYING_dying;
          rspin_barrier(&d->domain_lock);
          argo_destroy(d);
+#ifdef CONFIG_DOMCTL
          vnuma_destroy(d->vnuma);
+#endif

There is a stub already for this, just that right now it's shim-specific.
>> --- a/xen/include/hypercall-defs.c
+++ b/xen/include/hypercall-defs.c
@@ -234,7 +234,7 @@ stack_switch                       do:2     do:2     -      
  -        -
  set_callbacks                      compat   do       -        -        -
  fpu_taskswitch                     do       do       -        -        -
  sched_op_compat                    do       do       -        -        dep
-#ifndef CONFIG_PV_SHIM_EXCLUSIVE
+#if defined(CONFIG_PLATFORM_HYP)

Nit: Why not #ifdef, like it was, and like you have it ...

@@ -247,7 +247,9 @@ set_timer_op                       compat   do       compat 
  do       -
  event_channel_op_compat            do       do       -        -        dep
  xen_version                        do       do       do       do       do
  console_io                         do       do       do       do       do
+#ifdef CONFIG_PHYSDEV
  physdev_op_compat                  compat   do       -        -        dep
+#endif
  #if defined(CONFIG_GRANT_TABLE)
  grant_table_op                     compat   do       hvm      hvm      do
  #elif defined(CONFIG_PV_SHIM)
@@ -269,14 +271,20 @@ callback_op                        compat   do       -    
    -        -
  xenoprof_op                        compat   do       -        -        -
  #endif
  event_channel_op                   do       do       do:1     do:1     do:1
+#ifdef CONFIG_PHYSDEVOP
  physdev_op                         compat   do       hvm      hvm      do_arm
-#ifdef CONFIG_HVM
+#endif
+#ifdef CONFIG_HVM_OP
  hvm_op                             do       do       do       do       do
  #endif
  #ifndef CONFIG_PV_SHIM_EXCLUSIVE
+#ifdef CONFIG_SYSCTL
  sysctl                             do       do       do       do       do
+#endif
+#ifdef CONFIG_DOMCTL
  domctl                             do       do       do       do       do
  #endif
+#endif
  #ifdef CONFIG_KEXEC
  kexec_op                           compat   do       -        -        -
  #endif
@@ -293,7 +301,9 @@ hypfs_op                           do       do       do     
  do       do
  #endif
  mca                                do       do       -        -        -
  #ifndef CONFIG_PV_SHIM_EXCLUSIVE
+#ifdef CONFIG_DOMCTL
  paging_domctl_cont                 do       do       do       do       -
  #endif
+#endif

... everywhere else?


yes, will fix that

--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -24,6 +24,18 @@
  /* Needs to be after asm/hypercall.h. */
  #include <xen/hypercall-defs.h>
+#if !defined(CONFIG_DOMCTL) && !defined(CONFIG_DOM0LESS_BOOT)
+#error "domctl and dom0less can't be disabled simultaneously"
+#endif
+
+#if !defined(CONFIG_PHYSDEVOP) && !defined(CONFIG_DOM0LESS_BOOT)
+#error "physdevop and dom0less can't be disabled simultaneously"
+#endif
+
+#if !defined(CONFIG_SYSCTL) && !defined(CONFIG_DOM0LESS_BOOT)
+#error "sysctl and dom0less can't be disabled simultaneously"
+#endif

I'm puzzled by this: It covers only 3 of the 5, and it really only
re-checks what Kconfig already enforces.


At some point I wasn't sure that kconfig will enforce this, because somehow I made kconfig produce configuration with both DOMCTL & DOM0LESS_BOOT being off. Anyway I can't reproduce it now, so will drop these checks in v2.

  -Sergiy



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.