diff options
Diffstat (limited to 'app-emulation/open-vm-tools-kmod')
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() { |