VMware

This Question is Answered

1 "correct" answer available (10 pts) 1 "helpful" answer available (6 pts)
1 2 Previous Next 16 Replies Last post: Feb 6, 2009 5:06 PM by nick.couchman  

GPL Components - Build ESX Drivers? posted: Jan 9, 2009 2:42 PM

Click to view nick.couchman's profile Champion 4,969 posts since
Jan 13, 2006

I recently downloaded the GPL components from the VMware VI3 download site. One of the tarballs in that file is the Open Source pieces of the ESX drivers. Along with this is a script called build-vmkdrivers.sh. I've tried running this script, and it results in many, many errors and absolutely no correct builds. I'm running it on a CentOS 3.9 system, similar to the RHEL3 base that is used for the Service Console, and I've tried using GCC 3.2.3 (included in CentOS3) and GCC 3.3.6, to no avail. Here's a very small sample of the types of errors I get:

** Compiling drivers/block/cciss/cciss.c
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h:124: error: syntax error before '*' token
src/include/linux/spinlock.h: In function `vmk_spin_is_locked_by_my_cpu':
src/include/linux/spinlock.h:126: error: `lock' undeclared (first use in this function)
src/include/linux/spinlock.h:126: error: (Each undeclared identifier is reported only once
src/include/linux/spinlock.h:126: error: for each function it appears in.)
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h: At top level:
src/include/linux/spinlock.h:230: error: syntax error before "spinlock_t"
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h:237: error: syntax error before "spinlock_t"
src/include/linux/spinlock.h:239: error: syntax error before '}' token
In file included from src/include/linux/fs.h:12,
from src/include/linux/capability.h:17,
from src/include/linux/binfmts.h:4,
from src/include/linux/sched.h:10,
from src/include/linux/mm.h:22,
from src/include/linux/slab.h:14,
from src/drivers/block/cciss/cciss.c:29:
src/include/linux/wait.h:90: error: syntax error before "spinlock_t"
src/include/linux/wait.h:102: error: syntax error before '}' token
src/include/linux/wait.h: In function `init_waitqueue_head':
src/include/linux/wait.h:194: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:205: error: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `waitqueue_active':
src/include/linux/wait.h:253: error: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `__add_wait_queue':
src/include/linux/wait.h:266: error: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `__add_wait_queue_tail':
src/include/linux/wait.h:283: error: dereferencing pointer to incomplete type

I've also tried building these in the service console on one of my ESX hosts, but I get similar errors:

** Compiling drivers/block/cciss/cciss.c
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h:124: syntax error before '*' token
src/include/linux/spinlock.h: In function `vmk_spin_is_locked_by_my_cpu':
src/include/linux/spinlock.h:126: `lock' undeclared (first use in this function)
src/include/linux/spinlock.h:126: (Each undeclared identifier is reported only once
src/include/linux/spinlock.h:126: for each function it appears in.)
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h: At top level:
src/include/linux/spinlock.h:230: syntax error before "spinlock_t"
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h:237: syntax error before "spinlock_t"
src/include/linux/spinlock.h:239: syntax error before '}' token
In file included from src/include/linux/fs.h:12,
from src/include/linux/capability.h:17,
from src/include/linux/binfmts.h:4,
from src/include/linux/sched.h:10,
from src/include/linux/mm.h:22,
from src/include/linux/slab.h:14,
from src/drivers/block/cciss/cciss.c:29:
src/include/linux/wait.h:90: syntax error before "spinlock_t"
src/include/linux/wait.h:102: syntax error before '}' token
src/include/linux/wait.h: In function `init_waitqueue_head':
src/include/linux/wait.h:194: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: dereferencing pointer to incomplete type
src/include/linux/wait.h:205: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `waitqueue_active':
src/include/linux/wait.h:253: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `__add_wait_queue':
src/include/linux/wait.h:266: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `__add_wait_queue_tail':
src/include/linux/wait.h:283: dereferencing pointer to incomplete type

I was wondering if anyone has successfully built these drivers from the provided source, or if you're even supposed to be able to build from these sources, and how, or if providing this is just VMware complying with a formality and you're not really supposed to be able to do anything with those sources?

Thanks - Nick

Re: GPL Components - Build ESX Drivers?

1. Jan 10, 2009 6:02 AM in response to: nick.couchman
Click to view Texiwill's profile Guru User Moderators vExpert 10,432 posts since
Jan 13, 2004
Hello,

You will most likely also need the VMware DDK. Access to this however is limited.... Unfortunately, GPL does not require you to provide something 'buildable' just the GPL portions of the code in source form. If the GPL code depends on licensed code that does not need to be provided.... GPL with licensed code is such a PITA at times.


Best regards,
Edward L. Haletky
VMware Communities User Moderator
====
Author of the book 'VMWare ESX Server in the Enterprise: Planning and Securing Virtualization Servers', Copyright 2008 Pearson Education.
Blue Gears and SearchVMware Pro Blogs: http://www.astroarch.com/wiki/index.php/Blog_Roll
Top Virtualization Security Links: http://www.astroarch.com/wiki/index.php/Top_Virtualization_Security_Links

Re: GPL Components - Build ESX Drivers?

3. Jan 10, 2009 9:20 PM in response to: nick.couchman
Click to view Rumple's profile Master 1,402 posts since
Jan 6, 2005
The big question being though, does this do anything for you other then give you the ability to load drivers for the service console, which is mainly just an effort in futility since its the vmkernel that you want to have the expanded driver support for.

Re: GPL Components - Build ESX Drivers?

5. Feb 5, 2009 10:04 AM in response to: nick.couchman
Click to view Texiwill's profile Guru User Moderators vExpert 10,432 posts since
Jan 13, 2004
Hello,

Sounds like a plan. I would help with this. If we get a good build script it should be pretty straight forward and would help quite a bit. Have you tried your driver in ESX yet?


Best regards,
Edward L. Haletky
VMware Communities User Moderator
====
Author of the book 'VMWare ESX Server in the Enterprise: Planning and Securing Virtualization Servers', Copyright 2008 Pearson Education.
Blue Gears and SearchVMware Pro Blogs -- Top Virtualization Security Links -- Virtualization Security Round Table Podcast

Re: GPL Components - Build ESX Drivers?

7. Feb 5, 2009 10:13 AM in response to: nick.couchman
Click to view Texiwill's profile Guru User Moderators vExpert 10,432 posts since
Jan 13, 2004
Hello,

I will ask.


Best regards,
Edward L. Haletky
VMware Communities User Moderator
====
Author of the book 'VMWare ESX Server in the Enterprise: Planning and Securing Virtualization Servers', Copyright 2008 Pearson Education.
Blue Gears and SearchVMware Pro Blogs -- Top Virtualization Security Links -- Virtualization Security Round Table Podcast

Re: GPL Components - Build ESX Drivers?

8. Feb 5, 2009 10:47 AM in response to: nick.couchman
Click to view JohnTroyer's profile Master VMware Employees User Moderators 963 posts since
Aug 30, 2005
I am not a lawyer, but I would stay away from ESX in the name. Trademark law is a lot about avoiding confusion, and VMware has a lot of open source projects on its own, so I would be confused if these were 'ESX Community Drivers'. Just give it a name. SexyDrivers? Backseat Driver Project? OpenHyperDrivers?

From looking at other products that work with ESX, you can certainly mention that they're for ESX in the description.

I'll ping our open source folks as well, as soon as I figure out who that is.

Re: GPL Components - Build ESX Drivers?

10. Feb 5, 2009 11:28 AM in response to: nick.couchman
Click to view Texiwill's profile Guru User Moderators vExpert 10,432 posts since
Jan 13, 2004
Hello,

I like the Open 'visor Drivers myself.... But that could be confused with Xen and KVM as wel

Perhaps just:

Open Virtualization Drivers


Best regards,
Edward L. Haletky
VMware Communities User Moderator
====
Author of the book 'VMWare ESX Server in the Enterprise: Planning and Securing Virtualization Servers', Copyright 2008 Pearson Education.
Blue Gears and SearchVMware Pro Blogs -- Top Virtualization Security Links -- Virtualization Security Round Table Podcast

Re: GPL Components - Build ESX Drivers?

12. Feb 5, 2009 8:48 PM in response to: nick.couchman
Click to view jasonjm's profile Novice 4 posts since
Dec 29, 2008
I would to jump onboard (no pun intended) with this sf proj.

My team and I have been looking at the new e1000e and realtek sources for sometime.
(current e1000e use an older source base)

Re: GPL Components - Build ESX Drivers?

13. Feb 6, 2009 12:14 AM in response to: nick.couchman
Click to view JohnTroyer's profile Master VMware Employees User Moderators 963 posts since
Aug 30, 2005
I spoke to some folks internally and we don't have any objections to the project or experimenting with the open source drivers. Keep in mind that they wouldn't be supported, of course, and there's no open api or ddk.

My personal thought is -- more power to you! You might even be able to expand the HCL, and this kind of thing can be very beneficial for the greater community. So have fun.

I didn't think it was necessary to talk to legal if you weren't going to name the project ESX. The licenses are pretty standard.

John

VMware Beta Programs

Want to be Considered for Future Beta Programs?

Learn More

VMware Developer

Download SDKs, APIs, videos,
training, and more in the Developer community.

Learn More

Developer
Sample Code

Increase your developer productivity with VMware API sample code.

Learn More

VMworld
Sessions & Labs

Online access to the latest VMworld Sessions & Labs and online services.

Learn more

Purchase PSO Credits Online

Purchase credits to redeem training and consulting services online.

Buy Now

Community Hardware Software

View reported configurations or report your own.

Learn More

Only VMware ... Delivers Nexus 1000V

Ensure consistent, policy-based network capabilities to virtual machines across your data center.

Learn More

Communities