* [PATCH kvm-kmod 0/4] Update to 3.19-rc1
@ 2015-01-08 10:32 Paolo Bonzini
2015-01-08 10:32 ` [PATCH 1/4] stubs for xsavec support Paolo Bonzini
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Paolo Bonzini @ 2015-01-08 10:32 UTC (permalink / raw)
To: kvm; +Cc: jan.kiszka
The largest changes are in the XSAVE support. Recent kernels added a
separate feature word for XSAVE features, and KVM's CPUID code is relying
on the new definition. Except for cpu_has_xsaves, it's never accessing
the feature itself: wrap cpu_has_xsaves with kvm_cpu_has_xsaves, and
then there is no problem with out-of-bounds accesses.
Paolo Bonzini (4):
stubs for xsavec support
fixes for changes in the iommu and PCI APIs
fixes for changes in the percpu counter API
add trace_seq_buffer_ptr
external-module-compat-comm.h | 32 ++++++++++++++++++++++++++++++++
external-module-compat.c | 11 +++++++++++
linux | 2 +-
sync | 14 ++++++++++++--
x86/external-module-compat.h | 37 +++++++++++++++++++++++++++++++++++++
5 files changed, 93 insertions(+), 3 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/4] stubs for xsavec support
2015-01-08 10:32 [PATCH kvm-kmod 0/4] Update to 3.19-rc1 Paolo Bonzini
@ 2015-01-08 10:32 ` Paolo Bonzini
2015-02-02 7:04 ` Jan Kiszka
2015-01-08 10:32 ` [PATCH 2/4] fixes for changes in the iommu and PCI APIs Paolo Bonzini
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Paolo Bonzini @ 2015-01-08 10:32 UTC (permalink / raw)
To: kvm; +Cc: jan.kiszka
These are needed for KVM changes in 3.18.
Recent kernels added a separate feature word for XSAVE features, and KVM's
CPUID code is relying on the new definition. Except for cpu_has_xsaves,
it's never accessing the feature itself: wrap cpu_has_xsaves with
kvm_cpu_has_xsaves, and then there is no problem with out-of-bounds
accesses.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
external-module-compat-comm.h | 4 ++++
external-module-compat.c | 11 +++++++++++
sync | 14 ++++++++++++--
x86/external-module-compat.h | 37 +++++++++++++++++++++++++++++++++++++
4 files changed, 64 insertions(+), 2 deletions(-)
diff --git a/external-module-compat-comm.h b/external-module-compat-comm.h
index c20b1ed..1717ba3 100644
--- a/external-module-compat-comm.h
+++ b/external-module-compat-comm.h
@@ -1424,3 +1424,7 @@ extern u64 kvm_get_boot_base_ns(struct timekeeper *tk);
#undef is_zero_pfn
#define is_zero_pfn(pfn) ((pfn) == page_to_pfn(ZERO_PAGE(0)))
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+void *get_xsave_addr(struct xsave_struct *xsave, int feature);
+#endif
diff --git a/external-module-compat.c b/external-module-compat.c
index 38717b6..068ab44 100644
--- a/external-module-compat.c
+++ b/external-module-compat.c
@@ -362,3 +362,14 @@ u64 kvm_get_boot_base_ns(struct timekeeper *tk)
}
#endif
#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+void *get_xsave_addr(struct xsave_struct *xsave, int feature)
+{
+ int index = fls64(feature) - 1;
+ u32 size, offset, ecx, edx;
+
+ cpuid_count(0xd, index, &size, &offset, &ecx, &edx);
+ return (u8 *)xsave + offset;
+}
+#endif
diff --git a/sync b/sync
index fff85f3..3086b70 100755
--- a/sync
+++ b/sync
@@ -44,8 +44,8 @@ def hack_content(fname, data):
'set_desc_base set_desc_limit pvclock_vcpu_time_info tboot_enabled '
'i387_fxsave_struct native_write_msr_safe xsave_struct '
'fpu_alloc fpu_free fpu_restore_checking fpu_save_init fpu_finit '
- 'load_gdt store_gdt xstate_size cpu_has_xsave __get_user_pages_fast '
- 'set_64bit siginfo_t use_mm '
+ 'load_gdt store_gdt xstate_size cpu_has_xsave cpu_has_xsaves '
+ '__get_user_pages_fast set_64bit siginfo_t use_mm '
'unuse_mm request_threaded_irq init_fpu __this_cpu_read '
'__this_cpu_write sigset_from_compat '
'sched_info_on x86_pmu_capability perf_get_x86_pmu_capability '
@@ -299,6 +299,16 @@ def hack_content(fname, data):
if line == '#endif' and finish_endif:
w('#endif')
finish_endif = False
+ if match(r'xcomp_bv'):
+ w('#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)')
+ w(line)
+ w('#else')
+ # Will be under if (cpu_has_xsaves), which is always 0. Just
+ # replace with something that compiles, the C statement might
+ # span more than one line.
+ w('WARN(1, "this should never happen"),')
+ w(sub(r'xcomp_bv', 'xstate_bv', line))
+ line = '#endif'
if match(r'tkr\.'):
w('#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0)')
w(line)
diff --git a/x86/external-module-compat.h b/x86/external-module-compat.h
index dec53b6..87cf76a 100644
--- a/x86/external-module-compat.h
+++ b/x86/external-module-compat.h
@@ -428,6 +428,23 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p)
#define X86_FEATURE_MPX (9*32+14) /* Memory Protection Extension */
#endif
+#if X86_FEATURE_XSAVEOPT < 10 * 32
+#undef X86_FEATURE_XSAVEOPT
+#endif
+#define X86_FEATURE_XSAVEOPT (10*32+0) /* XSAVEOPT instruction */
+
+#ifndef X86_FEATURE_XSAVEC
+#define X86_FEATURE_XSAVEC (10*32+1) /* XSAVEC instruction */
+#endif
+
+#ifndef X86_FEATURE_XGETBV1
+#define X86_FEATURE_XGETBV1 (10*32+2) /* "XCR1" register */
+#endif
+
+#ifndef X86_FEATURE_XSAVES
+#define X86_FEATURE_XSAVES (10*32+3) /* XSAVES instruction */
+#endif
+
#ifndef MSR_AMD64_PATCH_LOADER
#define MSR_AMD64_PATCH_LOADER 0xc0010020
#endif
@@ -586,6 +603,10 @@ static inline void preempt_notifier_sys_exit(void) {}
#define cpu_has_xsave boot_cpu_has(X86_FEATURE_XSAVE)
#endif
+#ifndef cpu_has_xsaves
+#define cpu_has_xsaves boot_cpu_has(X86_FEATURE_XSAVES)
+#endif
+
/* EFER_LMA and EFER_LME are missing in pre 2.6.24 i386 kernels */
#ifndef EFER_LME
#define _EFER_LME 8 /* Long mode enable */
@@ -1141,6 +1162,16 @@ static inline int kvm_init_fpu(struct task_struct *tsk)
#define XSTATE_EAGER (XSTATE_BNDREGS | XSTATE_BNDCSR)
#endif
+#ifndef XSTATE_OPMASK
+#define XSTATE_OPMASK 0x20
+#define XSTATE_ZMM_Hi256 0x40
+#define XSTATE_Hi16_ZMM 0x80
+#endif
+
+#ifndef XSTATE_AVX512
+#define XSTATE_AVX512 (XSTATE_OPMASK | XSTATE_ZMM_Hi256 | XSTATE_Hi16_ZMM)
+#endif
+
#ifndef XSTATE_EXTEND_MASK
#define XSTATE_EXTEND_MASK (~(XSTATE_FPSSE | (1ULL << 63)))
#endif
@@ -1496,6 +1527,12 @@ static inline int __register_hotcpu_notifier(struct notifier_block *nb)
}
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+#define kvm_cpu_has_xsaves 0
+#else /* >= 3.17 */
+#define kvm_cpu_has_xsaves cpu_has_xsaves
+#endif /* >= 3.17 */
+
#ifndef MSR_IA32_VMX_MISC_VMWRITE_SHADOW_RO_FIELDS
#define MSR_IA32_VMX_MISC_VMWRITE_SHADOW_RO_FIELDS (1ULL << 29)
#endif
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/4] fixes for changes in the iommu and PCI APIs
2015-01-08 10:32 [PATCH kvm-kmod 0/4] Update to 3.19-rc1 Paolo Bonzini
2015-01-08 10:32 ` [PATCH 1/4] stubs for xsavec support Paolo Bonzini
@ 2015-01-08 10:32 ` Paolo Bonzini
2015-01-08 10:32 ` [PATCH 3/4] fixes for changes in the percpu counter API Paolo Bonzini
2015-01-08 10:32 ` [PATCH 4/4] add trace_seq_buffer_ptr Paolo Bonzini
3 siblings, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2015-01-08 10:32 UTC (permalink / raw)
To: kvm; +Cc: jan.kiszka
These API changes were introduced in 3.18.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
external-module-compat-comm.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/external-module-compat-comm.h b/external-module-compat-comm.h
index 1717ba3..6866658 100644
--- a/external-module-compat-comm.h
+++ b/external-module-compat-comm.h
@@ -14,6 +14,7 @@
#include <linux/kvm_para.h>
#include <linux/kconfig.h>
#include <linux/cpu.h>
+#include <linux/pci.h>
#include <linux/time.h>
#include <linux/kernel.h>
#include <asm/processor.h>
@@ -1425,6 +1426,20 @@ extern u64 kvm_get_boot_base_ns(struct timekeeper *tk);
#undef is_zero_pfn
#define is_zero_pfn(pfn) ((pfn) == page_to_pfn(ZERO_PAGE(0)))
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,18, 0)
+#define iommu_capable(dummy, cap) \
+ iommu_domain_has_cap(kvm->arch.iommu_domain, cap)
+
+static inline void pci_clear_dev_assigned(struct pci_dev *pdev)
+{
+ pdev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED;
+}
+
+static inline void pci_set_dev_assigned(struct pci_dev *pdev)
+{
+ pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED;
+}
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
void *get_xsave_addr(struct xsave_struct *xsave, int feature);
#endif
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/4] fixes for changes in the percpu counter API
2015-01-08 10:32 [PATCH kvm-kmod 0/4] Update to 3.19-rc1 Paolo Bonzini
2015-01-08 10:32 ` [PATCH 1/4] stubs for xsavec support Paolo Bonzini
2015-01-08 10:32 ` [PATCH 2/4] fixes for changes in the iommu and PCI APIs Paolo Bonzini
@ 2015-01-08 10:32 ` Paolo Bonzini
2015-01-08 10:32 ` [PATCH 4/4] add trace_seq_buffer_ptr Paolo Bonzini
3 siblings, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2015-01-08 10:32 UTC (permalink / raw)
To: kvm; +Cc: jan.kiszka
These API changes were introduced in 3.18. Update source pointer
since 3.18 now compiles.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
external-module-compat-comm.h | 9 +++++++++
linux | 2 +-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/external-module-compat-comm.h b/external-module-compat-comm.h
index 6866658..f0e1ce2 100644
--- a/external-module-compat-comm.h
+++ b/external-module-compat-comm.h
@@ -1440,6 +1440,15 @@ static inline void pci_set_dev_assigned(struct pci_dev *pdev)
pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED;
}
+#undef percpu_counter_init
+#define percpu_counter_init(fbc, value, gfp) \
+ ({ \
+ static struct lock_class_key __key; \
+ \
+ __percpu_counter_init(fbc, value, &__key); \
+ })
+#endif
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
void *get_xsave_addr(struct xsave_struct *xsave, int feature);
#endif
diff --git a/linux b/linux
index da01e61..b2776bf 160000
--- a/linux
+++ b/linux
@@ -1 +1 @@
-Subproject commit da01e61428aa2b5c424fddc11178498462d8c77f
+Subproject commit b2776bf7149bddd1f4161f14f79520f17fc1d71d
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/4] add trace_seq_buffer_ptr
2015-01-08 10:32 [PATCH kvm-kmod 0/4] Update to 3.19-rc1 Paolo Bonzini
` (2 preceding siblings ...)
2015-01-08 10:32 ` [PATCH 3/4] fixes for changes in the percpu counter API Paolo Bonzini
@ 2015-01-08 10:32 ` Paolo Bonzini
3 siblings, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2015-01-08 10:32 UTC (permalink / raw)
To: kvm; +Cc: jan.kiszka
These API changes were introduced in 3.19-rc1. Update source pointer
since this is the only required change for 3.19-rc1.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
external-module-compat-comm.h | 4 ++++
linux | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/external-module-compat-comm.h b/external-module-compat-comm.h
index f0e1ce2..66cfde2 100644
--- a/external-module-compat-comm.h
+++ b/external-module-compat-comm.h
@@ -1452,3 +1452,7 @@ static inline void pci_set_dev_assigned(struct pci_dev *pdev)
#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
void *get_xsave_addr(struct xsave_struct *xsave, int feature);
#endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0)
+#define trace_seq_buffer_ptr(p) ((p)->buffer + (p)->len)
+#endif
diff --git a/linux b/linux
index b2776bf..97bf6af 160000
--- a/linux
+++ b/linux
@@ -1 +1 @@
-Subproject commit b2776bf7149bddd1f4161f14f79520f17fc1d71d
+Subproject commit 97bf6af1f928216fd6c5a66e8a57bfa95a659672
--
1.8.3.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] stubs for xsavec support
2015-01-08 10:32 ` [PATCH 1/4] stubs for xsavec support Paolo Bonzini
@ 2015-02-02 7:04 ` Jan Kiszka
2015-02-02 9:05 ` Paolo Bonzini
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kiszka @ 2015-02-02 7:04 UTC (permalink / raw)
To: Paolo Bonzini, kvm
On 2015-01-08 11:32, Paolo Bonzini wrote:
> These are needed for KVM changes in 3.18.
>
> Recent kernels added a separate feature word for XSAVE features, and KVM's
> CPUID code is relying on the new definition. Except for cpu_has_xsaves,
> it's never accessing the feature itself: wrap cpu_has_xsaves with
> kvm_cpu_has_xsaves, and then there is no problem with out-of-bounds
> accesses.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> external-module-compat-comm.h | 4 ++++
> external-module-compat.c | 11 +++++++++++
> sync | 14 ++++++++++++--
> x86/external-module-compat.h | 37 +++++++++++++++++++++++++++++++++++++
> 4 files changed, 64 insertions(+), 2 deletions(-)
>
...
> diff --git a/x86/external-module-compat.h b/x86/external-module-compat.h
> index dec53b6..87cf76a 100644
> --- a/x86/external-module-compat.h
> +++ b/x86/external-module-compat.h
> @@ -428,6 +428,23 @@ static inline int rdmsrl_safe(unsigned msr, unsigned long long *p)
> #define X86_FEATURE_MPX (9*32+14) /* Memory Protection Extension */
> #endif
>
> +#if X86_FEATURE_XSAVEOPT < 10 * 32
> +#undef X86_FEATURE_XSAVEOPT
> +#endif
> +#define X86_FEATURE_XSAVEOPT (10*32+0) /* XSAVEOPT instruction */
This causes redefinition warnings if the condition is not met. Was the
plan to put the define before the #endif?
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] stubs for xsavec support
2015-02-02 7:04 ` Jan Kiszka
@ 2015-02-02 9:05 ` Paolo Bonzini
2015-02-06 19:40 ` Jan Kiszka
0 siblings, 1 reply; 11+ messages in thread
From: Paolo Bonzini @ 2015-02-02 9:05 UTC (permalink / raw)
To: Jan Kiszka, kvm
On 02/02/2015 08:04, Jan Kiszka wrote:
>> > +#if X86_FEATURE_XSAVEOPT < 10 * 32
>> > +#undef X86_FEATURE_XSAVEOPT
>> > +#endif
>> > +#define X86_FEATURE_XSAVEOPT (10*32+0) /* XSAVEOPT instruction */
> This causes redefinition warnings if the condition is not met. Was the
> plan to put the define before the #endif?
The plan was to match the kernel's definition, which however has a space:
#define X86_FEATURE_XSAVEOPT (10*32+ 0)
But putting the define before the #endif also works.
Paolo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] stubs for xsavec support
2015-02-02 9:05 ` Paolo Bonzini
@ 2015-02-06 19:40 ` Jan Kiszka
2015-02-09 13:17 ` Paolo Bonzini
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kiszka @ 2015-02-06 19:40 UTC (permalink / raw)
To: Paolo Bonzini, kvm
On 2015-02-02 10:05, Paolo Bonzini wrote:
>
>
> On 02/02/2015 08:04, Jan Kiszka wrote:
>>>> +#if X86_FEATURE_XSAVEOPT < 10 * 32
>>>> +#undef X86_FEATURE_XSAVEOPT
>>>> +#endif
>>>> +#define X86_FEATURE_XSAVEOPT (10*32+0) /* XSAVEOPT instruction */
>> This causes redefinition warnings if the condition is not met. Was the
>> plan to put the define before the #endif?
>
> The plan was to match the kernel's definition, which however has a space:
>
> #define X86_FEATURE_XSAVEOPT (10*32+ 0)
>
> But putting the define before the #endif also works.
Finally got my buildbot working again: There are some open issues, maybe
you can have a look at http://buildbot.kiszka.org/kvm-kmod/waterfall,
next branch. At least the 3.17 thing requires fixing but may require
more than a #define.
Thanks,
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] stubs for xsavec support
2015-02-06 19:40 ` Jan Kiszka
@ 2015-02-09 13:17 ` Paolo Bonzini
2015-02-09 13:44 ` Jan Kiszka
0 siblings, 1 reply; 11+ messages in thread
From: Paolo Bonzini @ 2015-02-09 13:17 UTC (permalink / raw)
To: Jan Kiszka, kvm
On 06/02/2015 20:40, Jan Kiszka wrote:
> On 2015-02-02 10:05, Paolo Bonzini wrote:
>>
>>
>> On 02/02/2015 08:04, Jan Kiszka wrote:
>>>>> +#if X86_FEATURE_XSAVEOPT < 10 * 32
>>>>> +#undef X86_FEATURE_XSAVEOPT
>>>>> +#endif
>>>>> +#define X86_FEATURE_XSAVEOPT (10*32+0) /* XSAVEOPT instruction */
>>> This causes redefinition warnings if the condition is not met. Was the
>>> plan to put the define before the #endif?
>>
>> The plan was to match the kernel's definition, which however has a space:
>>
>> #define X86_FEATURE_XSAVEOPT (10*32+ 0)
>>
>> But putting the define before the #endif also works.
>
> Finally got my buildbot working again: There are some open issues, maybe
> you can have a look at http://buildbot.kiszka.org/kvm-kmod/waterfall,
> next branch. At least the 3.17 thing requires fixing but may require
> more than a #define.
Why is APICv crippled in kvm-kmod even for newer kernels?
If all that's needed is "make it compile with 3.9 and earlier",
you can do something like this:
diff --git a/sync b/sync
index 3086b70..36bed39 100755
--- a/sync
+++ b/sync
@@ -341,13 +341,18 @@ def hack_content(fname, data):
if line == '\tif (!cpu_has_vmx_apicv())':
w('#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)')
w(line)
+ w('#else')
+ w('if (1)')
line = '#endif'
if line == '#if IS_ENABLED(CONFIG_KVM)':
line = '#if 1'
- if line == '\t\tapic->send_IPI_mask(get_cpu_mask(vcpu->cpu),':
- line = '\t\t;'
- if line == '\t\t\t\tPOSTED_INTR_VECTOR);':
- line = ''
+ if match(r'^\t+apic->send_IPI_mask\(get_cpu_mask\(vcpu->cpu\),$'):
+ w('#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)')
+ w('\t\t;')
+ w('#else')
+ if match(r'^\t+POSTED_INTR_VECTOR\);$'):
+ w(line)
+ line = '#endif'
if line == '\tif (!static_cpu_has_bug(X86_BUG_AMD_TLB_MMATCH))':
w('#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)')
w(line)
Paolo
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] stubs for xsavec support
2015-02-09 13:17 ` Paolo Bonzini
@ 2015-02-09 13:44 ` Jan Kiszka
2015-02-09 13:45 ` Paolo Bonzini
0 siblings, 1 reply; 11+ messages in thread
From: Jan Kiszka @ 2015-02-09 13:44 UTC (permalink / raw)
To: Paolo Bonzini, kvm
On 2015-02-09 14:17, Paolo Bonzini wrote:
>
>
> On 06/02/2015 20:40, Jan Kiszka wrote:
>> On 2015-02-02 10:05, Paolo Bonzini wrote:
>>>
>>>
>>> On 02/02/2015 08:04, Jan Kiszka wrote:
>>>>>> +#if X86_FEATURE_XSAVEOPT < 10 * 32
>>>>>> +#undef X86_FEATURE_XSAVEOPT
>>>>>> +#endif
>>>>>> +#define X86_FEATURE_XSAVEOPT (10*32+0) /* XSAVEOPT instruction */
>>>> This causes redefinition warnings if the condition is not met. Was the
>>>> plan to put the define before the #endif?
>>>
>>> The plan was to match the kernel's definition, which however has a space:
>>>
>>> #define X86_FEATURE_XSAVEOPT (10*32+ 0)
>>>
>>> But putting the define before the #endif also works.
>>
>> Finally got my buildbot working again: There are some open issues, maybe
>> you can have a look at http://buildbot.kiszka.org/kvm-kmod/waterfall,
>> next branch. At least the 3.17 thing requires fixing but may require
>> more than a #define.
>
> Why is APICv crippled in kvm-kmod even for newer kernels?
No idea. Maybe the patcher runs amok? I didn't look into details yet.
>
> If all that's needed is "make it compile with 3.9 and earlier",
> you can do something like this:
>
> diff --git a/sync b/sync
> index 3086b70..36bed39 100755
> --- a/sync
> +++ b/sync
> @@ -341,13 +341,18 @@ def hack_content(fname, data):
> if line == '\tif (!cpu_has_vmx_apicv())':
> w('#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)')
> w(line)
> + w('#else')
> + w('if (1)')
> line = '#endif'
> if line == '#if IS_ENABLED(CONFIG_KVM)':
> line = '#if 1'
> - if line == '\t\tapic->send_IPI_mask(get_cpu_mask(vcpu->cpu),':
> - line = '\t\t;'
> - if line == '\t\t\t\tPOSTED_INTR_VECTOR);':
> - line = ''
> + if match(r'^\t+apic->send_IPI_mask\(get_cpu_mask\(vcpu->cpu\),$'):
> + w('#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)')
> + w('\t\t;')
> + w('#else')
> + if match(r'^\t+POSTED_INTR_VECTOR\);$'):
> + w(line)
> + line = '#endif'
> if line == '\tif (!static_cpu_has_bug(X86_BUG_AMD_TLB_MMATCH))':
> w('#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)')
> w(line)
Tested already? If so, please provide it as patch. If not: I can run it
later through buildbot here.
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] stubs for xsavec support
2015-02-09 13:44 ` Jan Kiszka
@ 2015-02-09 13:45 ` Paolo Bonzini
0 siblings, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2015-02-09 13:45 UTC (permalink / raw)
To: Jan Kiszka, kvm
On 09/02/2015 14:44, Jan Kiszka wrote:
> Tested already? If so, please provide it as patch.
Tested but not with APICv, so it's not really worthy except as a compile
check.
Paolo
> If not: I can run it later through buildbot here.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-02-09 13:45 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-08 10:32 [PATCH kvm-kmod 0/4] Update to 3.19-rc1 Paolo Bonzini
2015-01-08 10:32 ` [PATCH 1/4] stubs for xsavec support Paolo Bonzini
2015-02-02 7:04 ` Jan Kiszka
2015-02-02 9:05 ` Paolo Bonzini
2015-02-06 19:40 ` Jan Kiszka
2015-02-09 13:17 ` Paolo Bonzini
2015-02-09 13:44 ` Jan Kiszka
2015-02-09 13:45 ` Paolo Bonzini
2015-01-08 10:32 ` [PATCH 2/4] fixes for changes in the iommu and PCI APIs Paolo Bonzini
2015-01-08 10:32 ` [PATCH 3/4] fixes for changes in the percpu counter API Paolo Bonzini
2015-01-08 10:32 ` [PATCH 4/4] add trace_seq_buffer_ptr Paolo Bonzini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).