Message ID | 1740167795-13296-1-git-send-email-nunodasneves@linux.microsoft.com (mailing list archive) |
---|---|
Headers | show |
Series | Introduce CONFIG_MSHV_ROOT for root partition code | expand |
The subject line says v2 but this is actually v3! Nuno On 2/21/2025 11:56 AM, Nuno Das Neves wrote: > Running in the root partition is a unique and specialized case that > requires additional code. CONFIG_MSHV_ROOT allows Hyper-V guest kernels > to exclude this code, which is important since significant additional code > specific to the root partition is expected to be added over time. > > To do this, change hv_root_partition to be a function which is stubbed out > to return false if CONFIG_MSHV_ROOT=n, and don't compile hv_proc.c at all, > stubbing out those functions with inline versions. > > Store the partition type (guest or root) in an enum hv_curr_partition_type, > which can be extended beyond just guest and root partition. > > While at it, introduce hv_result_to_errno() to convert Hyper-V status codes > to regular linux errors. This is useful because the caller of a hypercall > helper function (such as those in hv_proc.c) usually can't and doesn't > interpret the Hyper-V status, so it is better to convert it to an error code > and reduce the possibility of misinterpreting it. This also alows the stubbed > versions of the hv_proc.c functions to just return a linux error code. > > Signed-off-by: Nuno Das Neves <nunodasneves@linux.microsoft.com> > --- > Changes in v3: > * Fix a typo [Easwar Hariharan] > * Fix ret being initialized to HV_STATUS_SUCCESS in some hypercall helpers > [Michael Kelley] > * Fix CONFIG_MSHV_ROOT being used in patch 2, before it is defined [Michael > Kelley] > * Shorten hv_current_partition_type to hv_curr_partition_type [Mukesh Rathor] > > Changes in v2: > * Add patch to convert hypercall statuses to linux error codes [Easwar > Hariharan] > * While at it, split the original patch into two logical pieces, one to change > hv_root_partition into a function, and one to introduce MSHV_CONFIG_ROOT > * Improve the clarity of and add an error message to > hv_identify_partition_type() [Easwar Hariharan] [Michael Kelley] > * Better explain *why* the patches are useful, in the commit messages [Michael > Kelley] > * Add a Kconfig comment explaining why PAGE_SIZE_4KB is needed [Michael Kelley] > * Minor style and typo fixes > > Nuno Das Neves (3): > hyperv: Convert hypercall statuses to linux error codes > hyperv: Change hv_root_partition into a function > hyperv: Add CONFIG_MSHV_ROOT to gate root partition support > > arch/arm64/hyperv/mshyperv.c | 2 + > arch/x86/hyperv/hv_init.c | 10 ++--- > arch/x86/kernel/cpu/mshyperv.c | 24 +---------- > drivers/clocksource/hyperv_timer.c | 4 +- > drivers/hv/Kconfig | 16 +++++++ > drivers/hv/Makefile | 3 +- > drivers/hv/hv.c | 10 ++--- > drivers/hv/hv_common.c | 69 +++++++++++++++++++++++++++--- > drivers/hv/hv_proc.c | 10 ++--- > drivers/hv/vmbus_drv.c | 2 +- > drivers/iommu/hyperv-iommu.c | 4 +- > include/asm-generic/mshyperv.h | 40 ++++++++++++++--- > 12 files changed, 139 insertions(+), 55 deletions(-) >
On 2/21/2025 12:01 PM, Nuno Das Neves wrote: > The subject line says v2 but this is actually v3! > > Nuno For the series, Reviewed-by: Easwar Hariharan <eahariha@linux.microsoft.com>
On Fri, Feb 21, 2025 at 11:56:32AM -0800, Nuno Das Neves wrote: > Running in the root partition is a unique and specialized case that > requires additional code. CONFIG_MSHV_ROOT allows Hyper-V guest kernels > to exclude this code, which is important since significant additional code > specific to the root partition is expected to be added over time. > > To do this, change hv_root_partition to be a function which is stubbed out > to return false if CONFIG_MSHV_ROOT=n, and don't compile hv_proc.c at all, > stubbing out those functions with inline versions. > > Store the partition type (guest or root) in an enum hv_curr_partition_type, > which can be extended beyond just guest and root partition. > > While at it, introduce hv_result_to_errno() to convert Hyper-V status codes > to regular linux errors. This is useful because the caller of a hypercall > helper function (such as those in hv_proc.c) usually can't and doesn't > interpret the Hyper-V status, so it is better to convert it to an error code > and reduce the possibility of misinterpreting it. This also alows the stubbed > versions of the hv_proc.c functions to just return a linux error code. > > Signed-off-by: Nuno Das Neves <nunodasneves@linux.microsoft.com> No need to sign this off. :-) > > Nuno Das Neves (3): > hyperv: Convert hypercall statuses to linux error codes > hyperv: Change hv_root_partition into a function > hyperv: Add CONFIG_MSHV_ROOT to gate root partition support > Applied to hyperv-next. Thanks.
Running in the root partition is a unique and specialized case that requires additional code. CONFIG_MSHV_ROOT allows Hyper-V guest kernels to exclude this code, which is important since significant additional code specific to the root partition is expected to be added over time. To do this, change hv_root_partition to be a function which is stubbed out to return false if CONFIG_MSHV_ROOT=n, and don't compile hv_proc.c at all, stubbing out those functions with inline versions. Store the partition type (guest or root) in an enum hv_curr_partition_type, which can be extended beyond just guest and root partition. While at it, introduce hv_result_to_errno() to convert Hyper-V status codes to regular linux errors. This is useful because the caller of a hypercall helper function (such as those in hv_proc.c) usually can't and doesn't interpret the Hyper-V status, so it is better to convert it to an error code and reduce the possibility of misinterpreting it. This also alows the stubbed versions of the hv_proc.c functions to just return a linux error code. Signed-off-by: Nuno Das Neves <nunodasneves@linux.microsoft.com> --- Changes in v3: * Fix a typo [Easwar Hariharan] * Fix ret being initialized to HV_STATUS_SUCCESS in some hypercall helpers [Michael Kelley] * Fix CONFIG_MSHV_ROOT being used in patch 2, before it is defined [Michael Kelley] * Shorten hv_current_partition_type to hv_curr_partition_type [Mukesh Rathor] Changes in v2: * Add patch to convert hypercall statuses to linux error codes [Easwar Hariharan] * While at it, split the original patch into two logical pieces, one to change hv_root_partition into a function, and one to introduce MSHV_CONFIG_ROOT * Improve the clarity of and add an error message to hv_identify_partition_type() [Easwar Hariharan] [Michael Kelley] * Better explain *why* the patches are useful, in the commit messages [Michael Kelley] * Add a Kconfig comment explaining why PAGE_SIZE_4KB is needed [Michael Kelley] * Minor style and typo fixes Nuno Das Neves (3): hyperv: Convert hypercall statuses to linux error codes hyperv: Change hv_root_partition into a function hyperv: Add CONFIG_MSHV_ROOT to gate root partition support arch/arm64/hyperv/mshyperv.c | 2 + arch/x86/hyperv/hv_init.c | 10 ++--- arch/x86/kernel/cpu/mshyperv.c | 24 +---------- drivers/clocksource/hyperv_timer.c | 4 +- drivers/hv/Kconfig | 16 +++++++ drivers/hv/Makefile | 3 +- drivers/hv/hv.c | 10 ++--- drivers/hv/hv_common.c | 69 +++++++++++++++++++++++++++--- drivers/hv/hv_proc.c | 10 ++--- drivers/hv/vmbus_drv.c | 2 +- drivers/iommu/hyperv-iommu.c | 4 +- include/asm-generic/mshyperv.h | 40 ++++++++++++++--- 12 files changed, 139 insertions(+), 55 deletions(-)