* [PATCH v2] mshv: Add support for integrated scheduler
@ 2026-01-29 20:07 Stanislav Kinsburskii
2026-01-30 1:29 ` Michael Kelley
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Stanislav Kinsburskii @ 2026-01-29 20:07 UTC (permalink / raw)
To: kys, haiyangz, wei.liu, decui, longli; +Cc: linux-hyperv, linux-kernel
Query the hypervisor for integrated scheduler support and use it if
configured.
Microsoft Hypervisor originally provided two schedulers: root and core. The
root scheduler allows the root partition to schedule guest vCPUs across
physical cores, supporting both time slicing and CPU affinity (e.g., via
cgroups). In contrast, the core scheduler delegates vCPU-to-physical-core
scheduling entirely to the hypervisor.
Direct virtualization introduces a new privileged guest partition type - L1
Virtual Host (L1VH) — which can create child partitions from its own
resources. These child partitions are effectively siblings, scheduled by
the hypervisor's core scheduler. This prevents the L1VH parent from setting
affinity or time slicing for its own processes or guest VPs. While cgroups,
CFS, and cpuset controllers can still be used, their effectiveness is
unpredictable, as the core scheduler swaps vCPUs according to its own logic
(typically round-robin across all allocated physical CPUs). As a result,
the system may appear to "steal" time from the L1VH and its children.
To address this, Microsoft Hypervisor introduces the integrated scheduler.
This allows an L1VH partition to schedule its own vCPUs and those of its
guests across its "physical" cores, effectively emulating root scheduler
behavior within the L1VH, while retaining core scheduler behavior for the
rest of the system.
The integrated scheduler is controlled by the root partition and gated by
the vmm_enable_integrated_scheduler capability bit. If set, the hypervisor
supports the integrated scheduler. The L1VH partition must then check if it
is enabled by querying the corresponding extended partition property. If
this property is true, the L1VH partition must use the root scheduler
logic; otherwise, it must use the core scheduler. This requirement makes
reading VMM capabilities in L1VH partition a requirement too.
Signed-off-by: Andreea Pintilie <anpintil@microsoft.com>
Signed-off-by: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
---
drivers/hv/mshv_root_main.c | 85 +++++++++++++++++++++++++++----------------
include/hyperv/hvhdk_mini.h | 7 +++-
2 files changed, 59 insertions(+), 33 deletions(-)
diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
index 1134a82c7881..086e455dd889 100644
--- a/drivers/hv/mshv_root_main.c
+++ b/drivers/hv/mshv_root_main.c
@@ -2053,6 +2053,32 @@ static const char *scheduler_type_to_string(enum hv_scheduler_type type)
};
}
+static int __init l1vh_retrive_scheduler_type(enum hv_scheduler_type *out)
+{
+ u64 integrated_sched_enabled;
+ int ret;
+
+ *out = HV_SCHEDULER_TYPE_CORE_SMT;
+
+ if (!mshv_root.vmm_caps.vmm_enable_integrated_scheduler)
+ return 0;
+
+ ret = hv_call_get_partition_property_ex(HV_PARTITION_ID_SELF,
+ HV_PARTITION_PROPERTY_INTEGRATED_SCHEDULER_ENABLED,
+ 0, &integrated_sched_enabled,
+ sizeof(integrated_sched_enabled));
+ if (ret)
+ return ret;
+
+ if (integrated_sched_enabled)
+ *out = HV_SCHEDULER_TYPE_ROOT;
+
+ pr_debug("%s: integrated scheduler property read: ret=%d value=%llu\n",
+ __func__, ret, integrated_sched_enabled);
+
+ return 0;
+}
+
/* TODO move this to hv_common.c when needed outside */
static int __init hv_retrieve_scheduler_type(enum hv_scheduler_type *out)
{
@@ -2085,13 +2111,12 @@ static int __init hv_retrieve_scheduler_type(enum hv_scheduler_type *out)
/* Retrieve and stash the supported scheduler type */
static int __init mshv_retrieve_scheduler_type(struct device *dev)
{
- int ret = 0;
+ int ret;
if (hv_l1vh_partition())
- hv_scheduler_type = HV_SCHEDULER_TYPE_CORE_SMT;
+ ret = l1vh_retrive_scheduler_type(&hv_scheduler_type);
else
ret = hv_retrieve_scheduler_type(&hv_scheduler_type);
-
if (ret)
return ret;
@@ -2211,42 +2236,29 @@ struct notifier_block mshv_reboot_nb = {
static void mshv_root_partition_exit(void)
{
unregister_reboot_notifier(&mshv_reboot_nb);
- root_scheduler_deinit();
}
static int __init mshv_root_partition_init(struct device *dev)
{
- int err;
-
- err = root_scheduler_init(dev);
- if (err)
- return err;
-
- err = register_reboot_notifier(&mshv_reboot_nb);
- if (err)
- goto root_sched_deinit;
-
- return 0;
-
-root_sched_deinit:
- root_scheduler_deinit();
- return err;
+ return register_reboot_notifier(&mshv_reboot_nb);
}
-static void mshv_init_vmm_caps(struct device *dev)
+static int __init mshv_init_vmm_caps(struct device *dev)
{
- /*
- * This can only fail here if HVCALL_GET_PARTITION_PROPERTY_EX or
- * HV_PARTITION_PROPERTY_VMM_CAPABILITIES are not supported. In that
- * case it's valid to proceed as if all vmm_caps are disabled (zero).
- */
- if (hv_call_get_partition_property_ex(HV_PARTITION_ID_SELF,
- HV_PARTITION_PROPERTY_VMM_CAPABILITIES,
- 0, &mshv_root.vmm_caps,
- sizeof(mshv_root.vmm_caps)))
- dev_warn(dev, "Unable to get VMM capabilities\n");
+ int ret;
+
+ ret = hv_call_get_partition_property_ex(HV_PARTITION_ID_SELF,
+ HV_PARTITION_PROPERTY_VMM_CAPABILITIES,
+ 0, &mshv_root.vmm_caps,
+ sizeof(mshv_root.vmm_caps));
+ if (ret && hv_l1vh_partition())
+ dev_err(dev, "Failed to get VMM capabilities: %d\n", ret);
+ return ret;
+ }
dev_dbg(dev, "vmm_caps = %#llx\n", mshv_root.vmm_caps.as_uint64[0]);
+
+ return 0;
}
static int __init mshv_parent_partition_init(void)
@@ -2292,6 +2304,10 @@ static int __init mshv_parent_partition_init(void)
mshv_cpuhp_online = ret;
+ ret = mshv_init_vmm_caps(dev);
+ if (ret)
+ goto remove_cpu_state;
+
ret = mshv_retrieve_scheduler_type(dev);
if (ret)
goto remove_cpu_state;
@@ -2301,11 +2317,13 @@ static int __init mshv_parent_partition_init(void)
if (ret)
goto remove_cpu_state;
- mshv_init_vmm_caps(dev);
+ ret = root_scheduler_init(dev);
+ if (ret)
+ goto exit_partition;
ret = mshv_irqfd_wq_init();
if (ret)
- goto exit_partition;
+ goto deinit_root_scheduler;
spin_lock_init(&mshv_root.pt_ht_lock);
hash_init(mshv_root.pt_htable);
@@ -2314,6 +2332,8 @@ static int __init mshv_parent_partition_init(void)
return 0;
+deinit_root_scheduler:
+ root_scheduler_deinit();
exit_partition:
if (hv_root_partition())
mshv_root_partition_exit();
@@ -2332,6 +2352,7 @@ static void __exit mshv_parent_partition_exit(void)
mshv_port_table_fini();
misc_deregister(&mshv_dev);
mshv_irqfd_wq_cleanup();
+ root_scheduler_deinit();
if (hv_root_partition())
mshv_root_partition_exit();
cpuhp_remove_state(mshv_cpuhp_online);
diff --git a/include/hyperv/hvhdk_mini.h b/include/hyperv/hvhdk_mini.h
index 41a29bf8ec14..c0300910808b 100644
--- a/include/hyperv/hvhdk_mini.h
+++ b/include/hyperv/hvhdk_mini.h
@@ -87,6 +87,9 @@ enum hv_partition_property_code {
HV_PARTITION_PROPERTY_PRIVILEGE_FLAGS = 0x00010000,
HV_PARTITION_PROPERTY_SYNTHETIC_PROC_FEATURES = 0x00010001,
+ /* Integrated scheduling properties */
+ HV_PARTITION_PROPERTY_INTEGRATED_SCHEDULER_ENABLED = 0x00020005,
+
/* Resource properties */
HV_PARTITION_PROPERTY_GPA_PAGE_ACCESS_TRACKING = 0x00050005,
HV_PARTITION_PROPERTY_UNIMPLEMENTED_MSR_ACTION = 0x00050017,
@@ -102,7 +105,7 @@ enum hv_partition_property_code {
};
#define HV_PARTITION_VMM_CAPABILITIES_BANK_COUNT 1
-#define HV_PARTITION_VMM_CAPABILITIES_RESERVED_BITFIELD_COUNT 59
+#define HV_PARTITION_VMM_CAPABILITIES_RESERVED_BITFIELD_COUNT 57
struct hv_partition_property_vmm_capabilities {
u16 bank_count;
@@ -119,6 +122,8 @@ struct hv_partition_property_vmm_capabilities {
u64 reservedbit3: 1;
#endif
u64 assignable_synthetic_proc_features: 1;
+ u64 reservedbit5: 1;
+ u64 vmm_enable_integrated_scheduler : 1;
u64 reserved0: HV_PARTITION_VMM_CAPABILITIES_RESERVED_BITFIELD_COUNT;
} __packed;
};
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCH v2] mshv: Add support for integrated scheduler
2026-01-29 20:07 [PATCH v2] mshv: Add support for integrated scheduler Stanislav Kinsburskii
@ 2026-01-30 1:29 ` Michael Kelley
2026-01-30 5:51 ` kernel test robot
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Michael Kelley @ 2026-01-30 1:29 UTC (permalink / raw)
To: Stanislav Kinsburskii, kys@microsoft.com, haiyangz@microsoft.com,
wei.liu@kernel.org, decui@microsoft.com, longli@microsoft.com
Cc: linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org
From: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com> Sent: Thursday, January 29, 2026 12:08 PM
>
> Microsoft Hypervisor originally provided two schedulers: root and core. The
> root scheduler allows the root partition to schedule guest vCPUs across
> physical cores, supporting both time slicing and CPU affinity (e.g., via
> cgroups). In contrast, the core scheduler delegates vCPU-to-physical-core
> scheduling entirely to the hypervisor.
>
> Direct virtualization introduces a new privileged guest partition type - L1
> Virtual Host (L1VH) — which can create child partitions from its own
> resources. These child partitions are effectively siblings, scheduled by
> the hypervisor's core scheduler. This prevents the L1VH parent from setting
> affinity or time slicing for its own processes or guest VPs. While cgroups,
> CFS, and cpuset controllers can still be used, their effectiveness is
> unpredictable, as the core scheduler swaps vCPUs according to its own logic
> (typically round-robin across all allocated physical CPUs). As a result,
> the system may appear to "steal" time from the L1VH and its children.
>
> To address this, Microsoft Hypervisor introduces the integrated scheduler.
> This allows an L1VH partition to schedule its own vCPUs and those of its
> guests across its "physical" cores, effectively emulating root scheduler
> behavior within the L1VH, while retaining core scheduler behavior for the
> rest of the system.
>
> The integrated scheduler is controlled by the root partition and gated by
> the vmm_enable_integrated_scheduler capability bit. If set, the hypervisor
> supports the integrated scheduler. The L1VH partition must then check if it
> is enabled by querying the corresponding extended partition property. If
> this property is true, the L1VH partition must use the root scheduler
> logic; otherwise, it must use the core scheduler. This requirement makes
> reading VMM capabilities in L1VH partition a requirement too.
>
> Signed-off-by: Andreea Pintilie <anpintil@microsoft.com>
> Signed-off-by: Stanislav Kinsburskii <skinsburskii@linux.microsoft.com>
> ---
> drivers/hv/mshv_root_main.c | 85 +++++++++++++++++++++++++++----------------
> include/hyperv/hvhdk_mini.h | 7 +++-
> 2 files changed, 59 insertions(+), 33 deletions(-)
>
Looks good.
Reviewed-by: Michael Kelley <mhklinux@outlook.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] mshv: Add support for integrated scheduler
2026-01-29 20:07 [PATCH v2] mshv: Add support for integrated scheduler Stanislav Kinsburskii
2026-01-30 1:29 ` Michael Kelley
@ 2026-01-30 5:51 ` kernel test robot
2026-01-30 9:15 ` kernel test robot
2026-01-30 15:09 ` kernel test robot
3 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-01-30 5:51 UTC (permalink / raw)
To: Stanislav Kinsburskii, kys, haiyangz, wei.liu, decui, longli
Cc: oe-kbuild-all, linux-hyperv, linux-kernel
Hi Stanislav,
kernel test robot noticed the following build warnings:
[auto build test WARNING on linus/master]
[also build test WARNING on v6.19-rc7 next-20260129]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Stanislav-Kinsburskii/mshv-Add-support-for-integrated-scheduler/20260130-041014
base: linus/master
patch link: https://lore.kernel.org/r/176971725312.67225.3938191771112866951.stgit%40skinsburskii-cloud-desktop.internal.cloudapp.net
patch subject: [PATCH v2] mshv: Add support for integrated scheduler
config: x86_64-randconfig-014-20260130 (https://download.01.org/0day-ci/archive/20260130/202601301357.SWdA3gzf-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260130/202601301357.SWdA3gzf-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601301357.SWdA3gzf-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/hv/mshv_root_main.c: In function 'mshv_init_vmm_caps':
>> drivers/hv/mshv_root_main.c:2255:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
2255 | if (ret && hv_l1vh_partition())
| ^~
drivers/hv/mshv_root_main.c:2257:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
2257 | return ret;
| ^~~~~~
In file included from include/linux/printk.h:621,
from include/asm-generic/bug.h:31,
from arch/x86/include/asm/bug.h:193,
from arch/x86/include/asm/alternative.h:9,
from arch/x86/include/asm/segment.h:6,
from arch/x86/include/asm/ptrace.h:5,
from arch/x86/include/asm/math_emu.h:5,
from arch/x86/include/asm/processor.h:13,
from include/linux/sched.h:13,
from include/linux/resume_user_mode.h:6,
from include/linux/entry-virt.h:6,
from drivers/hv/mshv_root_main.c:11:
drivers/hv/mshv_root_main.c: At top level:
include/linux/dynamic_debug.h:228:58: error: expected identifier or '(' before 'do'
228 | #define __dynamic_func_call_cls(id, cls, fmt, func, ...) do { \
| ^~
include/linux/dynamic_debug.h:259:9: note: in expansion of macro '__dynamic_func_call_cls'
259 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
261 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
284 | _dynamic_func_call(fmt, __dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
drivers/hv/mshv_root_main.c:2260:9: note: in expansion of macro 'dev_dbg'
2260 | dev_dbg(dev, "vmm_caps = %#llx\n", mshv_root.vmm_caps.as_uint64[0]);
| ^~~~~~~
include/linux/dynamic_debug.h:234:3: error: expected identifier or '(' before 'while'
234 | } while (0)
| ^~~~~
include/linux/dynamic_debug.h:259:9: note: in expansion of macro '__dynamic_func_call_cls'
259 | __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
261 | _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
284 | _dynamic_func_call(fmt, __dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
165 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
drivers/hv/mshv_root_main.c:2260:9: note: in expansion of macro 'dev_dbg'
2260 | dev_dbg(dev, "vmm_caps = %#llx\n", mshv_root.vmm_caps.as_uint64[0]);
| ^~~~~~~
drivers/hv/mshv_root_main.c:2262:9: error: expected identifier or '(' before 'return'
2262 | return 0;
| ^~~~~~
drivers/hv/mshv_root_main.c:2263:1: error: expected identifier or '(' before '}' token
2263 | }
| ^
vim +/if +2255 drivers/hv/mshv_root_main.c
2246
2247 static int __init mshv_init_vmm_caps(struct device *dev)
2248 {
2249 int ret;
2250
2251 ret = hv_call_get_partition_property_ex(HV_PARTITION_ID_SELF,
2252 HV_PARTITION_PROPERTY_VMM_CAPABILITIES,
2253 0, &mshv_root.vmm_caps,
2254 sizeof(mshv_root.vmm_caps));
> 2255 if (ret && hv_l1vh_partition())
2256 dev_err(dev, "Failed to get VMM capabilities: %d\n", ret);
2257 return ret;
2258 }
2259
2260 dev_dbg(dev, "vmm_caps = %#llx\n", mshv_root.vmm_caps.as_uint64[0]);
2261
2262 return 0;
2263 }
2264
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] mshv: Add support for integrated scheduler
2026-01-29 20:07 [PATCH v2] mshv: Add support for integrated scheduler Stanislav Kinsburskii
2026-01-30 1:29 ` Michael Kelley
2026-01-30 5:51 ` kernel test robot
@ 2026-01-30 9:15 ` kernel test robot
2026-01-30 15:09 ` kernel test robot
3 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-01-30 9:15 UTC (permalink / raw)
To: Stanislav Kinsburskii, kys, haiyangz, wei.liu, decui, longli
Cc: llvm, oe-kbuild-all, linux-hyperv, linux-kernel
Hi Stanislav,
kernel test robot noticed the following build errors:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.19-rc7 next-20260129]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Stanislav-Kinsburskii/mshv-Add-support-for-integrated-scheduler/20260130-041014
base: linus/master
patch link: https://lore.kernel.org/r/176971725312.67225.3938191771112866951.stgit%40skinsburskii-cloud-desktop.internal.cloudapp.net
patch subject: [PATCH v2] mshv: Add support for integrated scheduler
config: x86_64-buildonly-randconfig-004-20260130 (https://download.01.org/0day-ci/archive/20260130/202601301732.2k4q81GI-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260130/202601301732.2k4q81GI-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601301732.2k4q81GI-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/hv/mshv_root_main.c:2260:2: error: expected identifier or '('
2260 | dev_dbg(dev, "vmm_caps = %#llx\n", mshv_root.vmm_caps.as_uint64[0]);
| ^
include/linux/dev_printk.h:171:2: note: expanded from macro 'dev_dbg'
171 | dev_no_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^
include/linux/dev_printk.h:137:3: note: expanded from macro 'dev_no_printk'
137 | ({ \
| ^
>> drivers/hv/mshv_root_main.c:2260:2: error: expected ')'
include/linux/dev_printk.h:171:2: note: expanded from macro 'dev_dbg'
171 | dev_no_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^
include/linux/dev_printk.h:137:3: note: expanded from macro 'dev_no_printk'
137 | ({ \
| ^
drivers/hv/mshv_root_main.c:2260:2: note: to match this '('
include/linux/dev_printk.h:171:2: note: expanded from macro 'dev_dbg'
171 | dev_no_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^
include/linux/dev_printk.h:137:2: note: expanded from macro 'dev_no_printk'
137 | ({ \
| ^
drivers/hv/mshv_root_main.c:2262:2: error: expected identifier or '('
2262 | return 0;
| ^
>> drivers/hv/mshv_root_main.c:2263:1: error: extraneous closing brace ('}')
2263 | }
| ^
4 errors generated.
vim +2260 drivers/hv/mshv_root_main.c
621191d709b148 Nuno Das Neves 2025-03-14 2246
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2247 static int __init mshv_init_vmm_caps(struct device *dev)
fd612d97a458f0 Purna Pavan Chandra Aekkaladevi 2025-10-10 2248 {
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2249 int ret;
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2250
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2251 ret = hv_call_get_partition_property_ex(HV_PARTITION_ID_SELF,
fd612d97a458f0 Purna Pavan Chandra Aekkaladevi 2025-10-10 2252 HV_PARTITION_PROPERTY_VMM_CAPABILITIES,
fd612d97a458f0 Purna Pavan Chandra Aekkaladevi 2025-10-10 2253 0, &mshv_root.vmm_caps,
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2254 sizeof(mshv_root.vmm_caps));
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2255 if (ret && hv_l1vh_partition())
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2256 dev_err(dev, "Failed to get VMM capabilities: %d\n", ret);
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2257 return ret;
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2258 }
fd612d97a458f0 Purna Pavan Chandra Aekkaladevi 2025-10-10 2259
fd612d97a458f0 Purna Pavan Chandra Aekkaladevi 2025-10-10 @2260 dev_dbg(dev, "vmm_caps = %#llx\n", mshv_root.vmm_caps.as_uint64[0]);
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2261
21480aa03ff5bc Stanislav Kinsburskii 2026-01-29 2262 return 0;
fd612d97a458f0 Purna Pavan Chandra Aekkaladevi 2025-10-10 @2263 }
fd612d97a458f0 Purna Pavan Chandra Aekkaladevi 2025-10-10 2264
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] mshv: Add support for integrated scheduler
2026-01-29 20:07 [PATCH v2] mshv: Add support for integrated scheduler Stanislav Kinsburskii
` (2 preceding siblings ...)
2026-01-30 9:15 ` kernel test robot
@ 2026-01-30 15:09 ` kernel test robot
3 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-01-30 15:09 UTC (permalink / raw)
To: Stanislav Kinsburskii, kys, haiyangz, wei.liu, decui, longli
Cc: oe-kbuild-all, linux-hyperv, linux-kernel
Hi Stanislav,
kernel test robot noticed the following build errors:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.19-rc7 next-20260129]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Stanislav-Kinsburskii/mshv-Add-support-for-integrated-scheduler/20260130-041014
base: linus/master
patch link: https://lore.kernel.org/r/176971725312.67225.3938191771112866951.stgit%40skinsburskii-cloud-desktop.internal.cloudapp.net
patch subject: [PATCH v2] mshv: Add support for integrated scheduler
config: x86_64-randconfig-002-20260130 (https://download.01.org/0day-ci/archive/20260130/202601302238.nUbp7p58-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260130/202601302238.nUbp7p58-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601302238.nUbp7p58-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/hv/mshv_root_main.c: In function 'mshv_init_vmm_caps':
drivers/hv/mshv_root_main.c:2255:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
2255 | if (ret && hv_l1vh_partition())
| ^~
drivers/hv/mshv_root_main.c:2257:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
2257 | return ret;
| ^~~~~~
In file included from include/linux/device.h:15,
from include/linux/blk_types.h:11,
from include/linux/writeback.h:13,
from include/linux/memcontrol.h:23,
from include/linux/resume_user_mode.h:8,
from include/linux/entry-virt.h:6,
from drivers/hv/mshv_root_main.c:11:
drivers/hv/mshv_root_main.c: At top level:
>> include/linux/dev_printk.h:137:10: error: expected identifier or '(' before '{' token
137 | ({ \
| ^
include/linux/dev_printk.h:171:9: note: in expansion of macro 'dev_no_printk'
171 | dev_no_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~
drivers/hv/mshv_root_main.c:2260:9: note: in expansion of macro 'dev_dbg'
2260 | dev_dbg(dev, "vmm_caps = %#llx\n", mshv_root.vmm_caps.as_uint64[0]);
| ^~~~~~~
drivers/hv/mshv_root_main.c:2262:9: error: expected identifier or '(' before 'return'
2262 | return 0;
| ^~~~~~
drivers/hv/mshv_root_main.c:2263:1: error: expected identifier or '(' before '}' token
2263 | }
| ^
vim +137 include/linux/dev_printk.h
af628aae8640c26 Greg Kroah-Hartman 2019-12-09 99
ad7d61f159db739 Chris Down 2021-06-15 100 /*
ad7d61f159db739 Chris Down 2021-06-15 101 * Need to take variadic arguments even though we don't use them, as dev_fmt()
ad7d61f159db739 Chris Down 2021-06-15 102 * may only just have been expanded and may result in multiple arguments.
ad7d61f159db739 Chris Down 2021-06-15 103 */
ad7d61f159db739 Chris Down 2021-06-15 104 #define dev_printk_index_emit(level, fmt, ...) \
ad7d61f159db739 Chris Down 2021-06-15 105 printk_index_subsys_emit("%s %s: ", level, fmt)
ad7d61f159db739 Chris Down 2021-06-15 106
ad7d61f159db739 Chris Down 2021-06-15 107 #define dev_printk_index_wrap(_p_func, level, dev, fmt, ...) \
ad7d61f159db739 Chris Down 2021-06-15 108 ({ \
ad7d61f159db739 Chris Down 2021-06-15 109 dev_printk_index_emit(level, fmt); \
ad7d61f159db739 Chris Down 2021-06-15 110 _p_func(dev, fmt, ##__VA_ARGS__); \
ad7d61f159db739 Chris Down 2021-06-15 111 })
ad7d61f159db739 Chris Down 2021-06-15 112
ad7d61f159db739 Chris Down 2021-06-15 113 /*
ad7d61f159db739 Chris Down 2021-06-15 114 * Some callsites directly call dev_printk rather than going through the
ad7d61f159db739 Chris Down 2021-06-15 115 * dev_<level> infrastructure, so we need to emit here as well as inside those
ad7d61f159db739 Chris Down 2021-06-15 116 * level-specific macros. Only one index entry will be produced, either way,
ad7d61f159db739 Chris Down 2021-06-15 117 * since dev_printk's `fmt` isn't known at compile time if going through the
ad7d61f159db739 Chris Down 2021-06-15 118 * dev_<level> macros.
ad7d61f159db739 Chris Down 2021-06-15 119 *
ad7d61f159db739 Chris Down 2021-06-15 120 * dev_fmt() isn't called for dev_printk when used directly, as it's used by
ad7d61f159db739 Chris Down 2021-06-15 121 * the dev_<level> macros internally which already have dev_fmt() processed.
ad7d61f159db739 Chris Down 2021-06-15 122 *
ad7d61f159db739 Chris Down 2021-06-15 123 * We also can't use dev_printk_index_wrap directly, because we have a separate
ad7d61f159db739 Chris Down 2021-06-15 124 * level to process.
ad7d61f159db739 Chris Down 2021-06-15 125 */
ad7d61f159db739 Chris Down 2021-06-15 126 #define dev_printk(level, dev, fmt, ...) \
ad7d61f159db739 Chris Down 2021-06-15 127 ({ \
ad7d61f159db739 Chris Down 2021-06-15 128 dev_printk_index_emit(level, fmt); \
ad7d61f159db739 Chris Down 2021-06-15 129 _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
ad7d61f159db739 Chris Down 2021-06-15 130 })
ad7d61f159db739 Chris Down 2021-06-15 131
c26ec799042a388 Geert Uytterhoeven 2024-02-28 132 /*
c26ec799042a388 Geert Uytterhoeven 2024-02-28 133 * Dummy dev_printk for disabled debugging statements to use whilst maintaining
c26ec799042a388 Geert Uytterhoeven 2024-02-28 134 * gcc's format checking.
c26ec799042a388 Geert Uytterhoeven 2024-02-28 135 */
c26ec799042a388 Geert Uytterhoeven 2024-02-28 136 #define dev_no_printk(level, dev, fmt, ...) \
c26ec799042a388 Geert Uytterhoeven 2024-02-28 @137 ({ \
c26ec799042a388 Geert Uytterhoeven 2024-02-28 138 if (0) \
c26ec799042a388 Geert Uytterhoeven 2024-02-28 139 _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
c26ec799042a388 Geert Uytterhoeven 2024-02-28 140 })
c26ec799042a388 Geert Uytterhoeven 2024-02-28 141
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-01-30 15:10 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-29 20:07 [PATCH v2] mshv: Add support for integrated scheduler Stanislav Kinsburskii
2026-01-30 1:29 ` Michael Kelley
2026-01-30 5:51 ` kernel test robot
2026-01-30 9:15 ` kernel test robot
2026-01-30 15:09 ` kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox