Message ID | 497F365D.7000302@siemens.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Tue, Jan 27, 2009 at 05:29:17PM +0100, Jan Kiszka wrote: > pci_dev.msi_enabled was introduced in 2.6.18, thus building against > older kernels now fail. Fix via a compat wrapper. > > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> > --- > > kernel/external-module-compat-comm.h | 7 +++++++ > kernel/x86/hack-module.awk | 2 ++ > 2 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/kernel/external-module-compat-comm.h b/kernel/external-module-compat-comm.h > index 06af36d..937ba12 100644 > --- a/kernel/external-module-compat-comm.h > +++ b/kernel/external-module-compat-comm.h > @@ -718,3 +718,10 @@ static inline void cpumask_clear_cpu(int cpu, cpumask_var_t mask) > #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) > #define marker_synchronize_unregister() synchronize_sched() > #endif > + > +/* pci_dev.msi_enable was introduced in 2.6.18 */ > +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) > +#define kvm_pcidev_msi_enabled(dev) 1 > +#else > +#define kvm_pcidev_msi_enabled(dev) (dev)->msi_enabled > +#endif I think this will break device assignment for if the device is not MSI capable (if works at all in such older kernels). Need some other way to check if the device is MSI enabled. Perhaps PCI_MSI_FLAGS_ENABLE bit? Sheng? -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Jan 27, 2009 at 03:51:08PM -0200, Marcelo Tosatti wrote: > On Tue, Jan 27, 2009 at 05:29:17PM +0100, Jan Kiszka wrote: > > pci_dev.msi_enabled was introduced in 2.6.18, thus building against > > older kernels now fail. Fix via a compat wrapper. > > > > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> > > --- > > > > kernel/external-module-compat-comm.h | 7 +++++++ > > kernel/x86/hack-module.awk | 2 ++ > > 2 files changed, 9 insertions(+), 0 deletions(-) > > > > diff --git a/kernel/external-module-compat-comm.h b/kernel/external-module-compat-comm.h > > index 06af36d..937ba12 100644 > > --- a/kernel/external-module-compat-comm.h > > +++ b/kernel/external-module-compat-comm.h > > @@ -718,3 +718,10 @@ static inline void cpumask_clear_cpu(int cpu, cpumask_var_t mask) > > #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) > > #define marker_synchronize_unregister() synchronize_sched() > > #endif > > + > > +/* pci_dev.msi_enable was introduced in 2.6.18 */ > > +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) > > +#define kvm_pcidev_msi_enabled(dev) 1 > > +#else > > +#define kvm_pcidev_msi_enabled(dev) (dev)->msi_enabled > > +#endif > > I think this will break device assignment for if the device is not MSI > capable (if works at all in such older kernels). > > Need some other way to check if the device is MSI enabled. Perhaps > PCI_MSI_FLAGS_ENABLE bit? Sheng? Yes. I checked 2.6.17's code, seems if we indeed need this, the only way is converting it to a function which read from PCI configuration space and check PCI_MSI_FLAGS_ENABLE bit... (Or we can simply disable it for the old ones, but I think it's not desired).
diff --git a/kernel/external-module-compat-comm.h b/kernel/external-module-compat-comm.h index 06af36d..937ba12 100644 --- a/kernel/external-module-compat-comm.h +++ b/kernel/external-module-compat-comm.h @@ -718,3 +718,10 @@ static inline void cpumask_clear_cpu(int cpu, cpumask_var_t mask) #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28) #define marker_synchronize_unregister() synchronize_sched() #endif + +/* pci_dev.msi_enable was introduced in 2.6.18 */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) +#define kvm_pcidev_msi_enabled(dev) 1 +#else +#define kvm_pcidev_msi_enabled(dev) (dev)->msi_enabled +#endif diff --git a/kernel/x86/hack-module.awk b/kernel/x86/hack-module.awk index cc50856..dbca4d6 100644 --- a/kernel/x86/hack-module.awk +++ b/kernel/x86/hack-module.awk @@ -29,6 +29,8 @@ BEGIN { split("INIT_WORK tsc_khz desc_struct ldttss_desc64 desc_ptr " \ printf("MODULE_INFO(version, \"%s\");\n", version) } +{ sub(/match->dev->msi_enabled/, "kvm_pcidev_msi_enabled(match->dev)") } + /^static void __vmx_load_host_state/ { vmx_load_host_state = 1 }
pci_dev.msi_enabled was introduced in 2.6.18, thus building against older kernels now fail. Fix via a compat wrapper. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- kernel/external-module-compat-comm.h | 7 +++++++ kernel/x86/hack-module.awk | 2 ++ 2 files changed, 9 insertions(+), 0 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html