summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/open-vm-tools-kmod')
-rw-r--r--app-emulation/open-vm-tools-kmod/Manifest7
-rw-r--r--app-emulation/open-vm-tools-kmod/files/fragsize.patch104
-rw-r--r--app-emulation/open-vm-tools-kmod/files/moduleparam.patch12
-rw-r--r--app-emulation/open-vm-tools-kmod/files/setnlink.patch45
-rw-r--r--app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.11.20.535097.ebuild3
-rw-r--r--app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.12.20.562307.ebuild76
-rw-r--r--app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-8.8.1.528969.ebuild3
7 files changed, 248 insertions, 2 deletions
diff --git a/app-emulation/open-vm-tools-kmod/Manifest b/app-emulation/open-vm-tools-kmod/Manifest
index ea3ef40..ee5a507 100644
--- a/app-emulation/open-vm-tools-kmod/Manifest
+++ b/app-emulation/open-vm-tools-kmod/Manifest
@@ -1,7 +1,10 @@
+AUX fragsize.patch 4543 RMD160 3c9b7f1f08d0ac3a306b8e6632bcf18310484a26 SHA1 f623bdbe583153e0e12f293954c5ac155539a3f7 SHA256 fee39ad39fb9d3d84bfa09b7a51096ffc7d1f65f78a227ab591c0c006eef9f8e
+AUX moduleparam.patch 343 RMD160 3d7aeb126d67f41fb856c3378ba429956b52f43d SHA1 c443afe79f5ec0a1960f6f5a786782c0b9e7f9ed SHA256 857bb2fe2b73726e6cd78548fc59af0dfbba21bb2c372e18d9d369b2311d36a9
+AUX setnlink.patch 1209 RMD160 a5283fc57825ec23c0b07583d3f0d1a894718210 SHA1 4a1b6f95408bf72a33cb39e39166b440c83847f1 SHA256 cb0ba4f083163b69239e1afd6371a35a08be078ca15b4b300f615ee7e2f6141b
DIST open-vm-tools-2011.11.20-535097.tar.gz 3493786 RMD160 849ceae5bc09fd726d847db904742ad2dbdcd89a SHA1 12ab8092a9622c6155f35193a383e2db471703b9 SHA256 0380699e63b12f3769ea46250dd1364a83bde56155d287da0868f7352b5748b1
DIST open-vm-tools-2011.12.20-562307.tar.gz 3511859 RMD160 d2d70a4befddfa57c3c7a659ddb67492434dd090 SHA1 6add739abc00dd9a0c8b1e17d700f6d4df885d64 SHA256 421c396d4cc345165d1f4076792c62ae95cbcd06007e5a4e930c021f90fee570
DIST open-vm-tools-8.8.1-528969.tar.gz 3761288 RMD160 48671cd3b86b6d8ab1e764945baa18c8ef021066 SHA1 505aba7961402927f1bbe22329304edb6090c23f SHA256 eba9dfb87b3f1bcea9b956e417e5bbaefe1ff20b41ddcf1f49035f5cfb3c56c1
-EBUILD open-vm-tools-kmod-2011.11.20.535097.ebuild 1697 RMD160 6f047448e8e828c2b8b041de26b21135489781d6 SHA1 759176422ca9589b873fa67e4d9c1e56a230bfda SHA256 545ce1ab33e15106b9dc263b4d0eca95f2ead808dbc7ebc54ece3fcac531c63c
+EBUILD open-vm-tools-kmod-2011.11.20.535097.ebuild 1877 RMD160 86114ae0a3c68cf27141b345c1f1929ed80cb99d SHA1 1e512ff65809879fc8e26eef2d33b9db4635e8de SHA256 3b907d2503146bade15f8e09b453a1e9ac798b4b7a17a993fb91390c9f8273d5
EBUILD open-vm-tools-kmod-2011.12.20.562307.ebuild 1697 RMD160 6f047448e8e828c2b8b041de26b21135489781d6 SHA1 759176422ca9589b873fa67e4d9c1e56a230bfda SHA256 545ce1ab33e15106b9dc263b4d0eca95f2ead808dbc7ebc54ece3fcac531c63c
-EBUILD open-vm-tools-kmod-8.8.1.528969.ebuild 1697 RMD160 6f047448e8e828c2b8b041de26b21135489781d6 SHA1 759176422ca9589b873fa67e4d9c1e56a230bfda SHA256 545ce1ab33e15106b9dc263b4d0eca95f2ead808dbc7ebc54ece3fcac531c63c
+EBUILD open-vm-tools-kmod-8.8.1.528969.ebuild 1877 RMD160 86114ae0a3c68cf27141b345c1f1929ed80cb99d SHA1 1e512ff65809879fc8e26eef2d33b9db4635e8de SHA256 3b907d2503146bade15f8e09b453a1e9ac798b4b7a17a993fb91390c9f8273d5
MISC metadata.xml 503 RMD160 fc12351dcb94137033d4810fc69d0211e0d0ec93 SHA1 bbe6feea6eff4574c897555e35649c6bd1f01963 SHA256 bed306dcff1b6d4243cf63ba912c88d3a630081501891687925c9dbf37995e00
diff --git a/app-emulation/open-vm-tools-kmod/files/fragsize.patch b/app-emulation/open-vm-tools-kmod/files/fragsize.patch
new file mode 100644
index 0000000..1f85df5
--- /dev/null
+++ b/app-emulation/open-vm-tools-kmod/files/fragsize.patch
@@ -0,0 +1,104 @@
+diff --git a/modules/linux/vmxnet/vmxnet.c b/modules/linux/vmxnet/vmxnet.c
+index a6f5740..3c75bb2 100644
+--- a/modules/linux/vmxnet/vmxnet.c
++++ b/modules/linux/vmxnet/vmxnet.c
+@@ -989,7 +989,7 @@ vmxnet_probe_device(struct pci_dev *pdev, // IN: vmxnet PCI device
+ .ndo_start_xmit = &vmxnet_start_tx,
+ .ndo_stop = &vmxnet_close,
+ .ndo_get_stats = &vmxnet_get_stats,
+- .ndo_set_multicast_list = &vmxnet_set_multicast_list,
++ .ndo_set_rx_mode = &vmxnet_set_multicast_list,
+ .ndo_change_mtu = &vmxnet_change_mtu,
+ # ifdef VMW_HAVE_POLL_CONTROLLER
+ .ndo_poll_controller = vmxnet_netpoll,
+@@ -2033,21 +2033,23 @@ vmxnet_map_pkt(struct sk_buff *skb,
+ offset -= skb_headlen(skb);
+
+ for ( ; nextFrag < skb_shinfo(skb)->nr_frags; nextFrag++){
++ int fragSize;
+ frag = &skb_shinfo(skb)->frags[nextFrag];
++ fragSize = skb_frag_size(frag);
+
+ // skip those frags that are completely copied
+- if (offset >= frag->size){
+- offset -= frag->size;
++ if (offset >= fragSize){
++ offset -= fragSize;
+ } else {
+ // map the part of the frag that is not copied
+ dma = pci_map_page(lp->pdev,
+- frag->page,
++ frag->page.p,
+ frag->page_offset + offset,
+- frag->size - offset,
++ fragSize - offset,
+ PCI_DMA_TODEVICE);
+- VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, frag->size - offset);
++ VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, fragSize - offset);
+ VMXNET_LOG("vmxnet_map_tx: txRing[%u].sg[%d] -> frag[%d]+%u (%uB)\n",
+- dd->txDriverNext, nextSg, nextFrag, offset, frag->size - offset);
++ dd->txDriverNext, nextSg, nextFrag, offset, fragSize - offset);
+ nextSg++;
+ nextFrag++;
+
+@@ -2058,11 +2060,14 @@ vmxnet_map_pkt(struct sk_buff *skb,
+
+ // map the remaining frags, we might need to use additional tx entries
+ for ( ; nextFrag < skb_shinfo(skb)->nr_frags; nextFrag++) {
++ int fragSize;
+ frag = &skb_shinfo(skb)->frags[nextFrag];
++ fragSize = skb_frag_size(frag);
++
+ dma = pci_map_page(lp->pdev,
+- frag->page,
++ frag->page.p,
+ frag->page_offset,
+- frag->size,
++ fragSize,
+ PCI_DMA_TODEVICE);
+
+ if (nextSg == VMXNET2_SG_DEFAULT_LENGTH) {
+@@ -2091,9 +2096,9 @@ vmxnet_map_pkt(struct sk_buff *skb,
+
+ nextSg = 0;
+ }
+- VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, frag->size);
++ VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, fragSize);
+ VMXNET_LOG("vmxnet_map_tx: txRing[%u].sg[%d] -> frag[%d] (%uB)\n",
+- dd->txDriverNext, nextSg, nextFrag, frag->size);
++ dd->txDriverNext, nextSg, nextFrag, fragSize);
+ nextSg++;
+ }
+
+@@ -2548,7 +2553,7 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb)
+ if (UNLIKELY(newPage == NULL)) {
+ skb_shinfo(skb)->nr_frags = numFrags;
+ skb->len += skb->data_len;
+- skb->truesize += skb->data_len;
++ skb->truesize += PAGE_SIZE;
+
+ compat_dev_kfree_skb(skb, FREE_WRITE);
+
+@@ -2558,10 +2563,12 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb)
+ }
+
+ pci_unmap_page(pdev, rre2->paddr, PAGE_SIZE, PCI_DMA_FROMDEVICE);
+- skb_shinfo(skb)->frags[numFrags].page = lp->rxPages[dd->rxDriverNext2];
++ __skb_frag_set_page(&skb_shinfo(skb)->frags[numFrags],
++ lp->rxPages[dd->rxDriverNext2]);
+ skb_shinfo(skb)->frags[numFrags].page_offset = 0;
+ skb_shinfo(skb)->frags[numFrags].size = rre2->actualLength;
+ skb->data_len += rre2->actualLength;
++ skb->truesize += PAGE_SIZE;
+ numFrags++;
+
+ /* refill the buffer */
+@@ -2579,7 +2586,7 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb)
+ VMXNET_ASSERT(numFrags > 0);
+ skb_shinfo(skb)->nr_frags = numFrags;
+ skb->len += skb->data_len;
+- skb->truesize += skb->data_len;
++ skb->truesize += PAGE_SIZE;
+ VMXNET_LOG("vmxnet_rx: %dB from rxRing[%d](%dB)+rxRing2[%d, %d)(%dB)\n",
+ skb->len, dd->rxDriverNext, skb_headlen(skb),
+ firstFrag, dd->rxDriverNext2, skb->data_len);
diff --git a/app-emulation/open-vm-tools-kmod/files/moduleparam.patch b/app-emulation/open-vm-tools-kmod/files/moduleparam.patch
new file mode 100644
index 0000000..6589705
--- /dev/null
+++ b/app-emulation/open-vm-tools-kmod/files/moduleparam.patch
@@ -0,0 +1,12 @@
+diff --git a/modules/linux/vmhgfs/tcp.c b/modules/linux/vmhgfs/tcp.c
+index c7070a6..31a40df 100644
+--- a/modules/linux/vmhgfs/tcp.c
++++ b/modules/linux/vmhgfs/tcp.c
+@@ -32,6 +32,7 @@
+ #include <linux/in.h>
+ #include <linux/net.h>
+ #include <linux/inet.h>
++#include <linux/moduleparam.h>
+ #include <linux/errno.h>
+ #include <linux/kthread.h>
+
diff --git a/app-emulation/open-vm-tools-kmod/files/setnlink.patch b/app-emulation/open-vm-tools-kmod/files/setnlink.patch
new file mode 100644
index 0000000..9ae4fe7
--- /dev/null
+++ b/app-emulation/open-vm-tools-kmod/files/setnlink.patch
@@ -0,0 +1,45 @@
+diff --git a/modules/linux/vmhgfs/fsutil.c b/modules/linux/vmhgfs/fsutil.c
+index 0c5102b..a978005 100644
+--- a/modules/linux/vmhgfs/fsutil.c
++++ b/modules/linux/vmhgfs/fsutil.c
+@@ -62,6 +62,31 @@ static int HgfsPackGetattrRequest(HgfsReq *req,
+ * Private function implementations.
+ */
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)
++/*
++ *----------------------------------------------------------------------------
++ *
++ * set_nlink --
++ *
++ * Set an inode's link count.
++ *
++ * Results:
++ * None
++ *
++ * Side effects:
++ * None
++ *
++ *----------------------------------------------------------------------------
++ */
++
++static inline void
++set_nlink(struct inode *inode, unsigned int nlink)
++{
++ inode->i_nlink = nlink;
++}
++#endif
++
++
+ /*
+ *----------------------------------------------------------------------
+ *
+@@ -607,7 +632,7 @@ HgfsChangeFileAttributes(struct inode *inode, // IN/OUT: Inode
+ * account for '.' and ".."), and find printed a hard link error. So until
+ * we have getattr support for nlink, everyone gets 1.
+ */
+- inode->i_nlink = 1;
++ set_nlink(inode, 1);
+
+ /*
+ * Use the stored uid and gid if we were given them at mount-time, or if
diff --git a/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.11.20.535097.ebuild b/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.11.20.535097.ebuild
index 4cb06e9..30e144d 100644
--- a/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.11.20.535097.ebuild
+++ b/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.11.20.535097.ebuild
@@ -51,6 +51,9 @@ pkg_setup() {
src_prepare() {
sed -i.bak -e '/\smake\s/s/make/$(MAKE)/g' modules/linux/{vmblock,vmci,vmhgfs,vmsync,vmxnet,vsock}/Makefile\
|| die "Sed failed."
+ kernel_is ge 3 2 0 && epatch "${FILESDIR}/moduleparam.patch"
+ kernel_is ge 3 2 0 && epatch "${FILESDIR}/setnlink.patch"
+ kernel_is ge 3 2 0 && epatch "${FILESDIR}/fragsize.patch"
}
src_configure() {
diff --git a/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.12.20.562307.ebuild b/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.12.20.562307.ebuild
new file mode 100644
index 0000000..4cb06e9
--- /dev/null
+++ b/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2011.12.20.562307.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="4"
+
+inherit linux-mod versionator
+
+MY_PN="${PN/-kmod}"
+MY_PV="$(replace_version_separator 3 '-')"
+MY_P="${MY_PN}-${MY_PV}"
+
+DESCRIPTION="Opensourced tools for VMware guests"
+HOMEPAGE="http://open-vm-tools.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${MY_PN}/${MY_P}.tar.gz"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RDEPEND=""
+
+DEPEND="${RDEPEND}
+ virtual/linux-sources
+ "
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_setup() {
+ linux-mod_pkg_setup
+
+ VMWARE_MOD_DIR="modules/linux"
+ VMWARE_MODULE_LIST="vmblock vmci vmhgfs vmsync vmxnet vsock"
+
+ MODULE_NAMES=""
+ BUILD_TARGETS="auto-build HEADER_DIR=${KERNEL_DIR}/include BUILD_DIR=${KV_OUT_DIR} OVT_SOURCE_DIR=${S}"
+
+ for mod in ${VMWARE_MODULE_LIST};
+ do
+ if [ "${mod}" == "vmxnet" ];
+ then
+ MODTARGET="net"
+ else
+ MODTARGET="openvmtools"
+ fi
+ MODULE_NAMES="${MODULE_NAMES} ${mod}(${MODTARGET}:${S}/${VMWARE_MOD_DIR}/${mod})"
+ done
+}
+
+src_prepare() {
+ sed -i.bak -e '/\smake\s/s/make/$(MAKE)/g' modules/linux/{vmblock,vmci,vmhgfs,vmsync,vmxnet,vsock}/Makefile\
+ || die "Sed failed."
+}
+
+src_configure() {
+ : # do nothing at all
+}
+
+src_install() {
+ linux-mod_src_install
+
+ local udevrules="${T}/60-vmware.rules"
+ cat > "${udevrules}" <<-EOF
+ KERNEL=="vsock", GROUP="vmware", MODE=660
+ EOF
+ insinto /etc/udev/rules.d/
+ doins "${udevrules}"
+}
+
+pkg_postinst() {
+ linux-mod_pkg_postinst
+ elog "vmxnet3 for Linux is now upstream (as of Linux 2.6.32)"
+ elog "pvscsi for Linux is now upstream (vmw_pvscsi) (as of Linux 2.6.33)"
+ elog "vmmemctl for Linux is now upstream (vmw_balloon) (as of Linux 2.6.34)"
+}
diff --git a/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-8.8.1.528969.ebuild b/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-8.8.1.528969.ebuild
index 4cb06e9..30e144d 100644
--- a/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-8.8.1.528969.ebuild
+++ b/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-8.8.1.528969.ebuild
@@ -51,6 +51,9 @@ pkg_setup() {
src_prepare() {
sed -i.bak -e '/\smake\s/s/make/$(MAKE)/g' modules/linux/{vmblock,vmci,vmhgfs,vmsync,vmxnet,vsock}/Makefile\
|| die "Sed failed."
+ kernel_is ge 3 2 0 && epatch "${FILESDIR}/moduleparam.patch"
+ kernel_is ge 3 2 0 && epatch "${FILESDIR}/setnlink.patch"
+ kernel_is ge 3 2 0 && epatch "${FILESDIR}/fragsize.patch"
}
src_configure() {