diff mbox

external modules: Fix pre-2.6.18 kernels

Message ID 497F365D.7000302@siemens.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Jan Kiszka Jan. 27, 2009, 4:29 p.m. UTC
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

Comments

Marcelo Tosatti Jan. 27, 2009, 5:51 p.m. UTC | #1
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
Sheng Yang Jan. 29, 2009, 2:38 p.m. UTC | #2
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 mbox

Patch

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
 }