View | Details | Raw Unified
Collapse All | Expand All

(-) file_not_specified_in_diff (-64 / +261 lines)
Line 124    Link Here 
/* change kmem_cache_t to kmem_cache */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
# define kmem_cache_compat struct kmem_cache
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23)
#  define compat_kmem_cache_create(a, b, c, d, e, f) (kmem_cache_create(a, b, c, d, e))
# else
#  define compat_kmem_cache_create(a, b, c, d, e, f) (kmem_cache_create(a, b, c, d, e, f))
# endif
#else
# define kmem_cache_compat kmem_cache_t
# define compat_kmem_cache_create(a, b, c, d, e, f) (kmem_cache_create(a, b, c, d, e, f))
#endif
Line 2    Link Here 
KSRC=/lib/modules/$(shell uname -r)/build
KSRC ?= /lib/modules/$(shell uname -r)/build
Line 23    Link Here 
#include <linux/sched.h>
Line 268    Link Here 
    vmGlobal.vmPmms.pmmRegionsSlab = kmem_cache_create("vmRegions", sizeof(struct pmm_region_t), 0,
    vmGlobal.vmPmms.pmmRegionsSlab = compat_kmem_cache_create("vmRegions", sizeof(struct pmm_region_t), 0,
Line 21    Link Here 
#include <linux/sched.h>
Line 24    Link Here 
#include "compat/compat_memory.h"
Line 196    Link Here 
        kmem_cache_t *pmmRegionsSlab;
        kmem_cache_compat *pmmRegionsSlab;
Line 6    Link Here 
// $Id: prlnet.c,v 1.6 2006/07/21 09:05:36 sergeyv Exp $
// $Id: prlnet.c 28219 2007-07-27 08:03:39Z anatolykh $
Line 18    Link Here 
#include <linux/mm.h>
Line 34    Link Here 
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
#include <net/ip.h>
#endif
Line 726    Link Here 
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
	skb_reset_mac_header(skb);
	skb_set_network_header(skb, sizeof(skb->mac_header));
#else
Line 728    Link Here 
#endif
Line 784    Link Here 
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
		eth = (eth_header_t *)skb_mac_header(skbout);	
#else
Line 785    Link Here 
#endif
Line 875    Link Here 
prlnet_recv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt)
prlnet_recv(
	struct sk_buff *skb, struct net_device *dev, struct packet_type *pt
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,14)
	, struct net_device *origdev
#endif
	)
Line 884    Link Here 
			&& skb->ip_summed == CHECKSUM_HW;
			&& skb->ip_summed ==
#ifdef CHECKSUM_HW
				CHECKSUM_HW;
#else
				CHECKSUM_PARTIAL;
#endif
Line 888    Link Here 
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
			int len = skb->data - skb_mac_header(skb) + skb->len;
#else
Line 889    Link Here 
#endif
Line 892    Link Here 
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
					// can't use skb_copy_and_csum_dev(skb, buf + 2) here
					// because skb->h == skb->nh. opensource rules!
					int hoff = sizeof(struct ethhdr) + ip_hdrlen(skb);
					// IP header checksum is done by the kernel
					skb_copy_bits(skb,
						skb_mac_header(skb) - skb->data, buf + 2, hoff);
					// skb->csum is an offset from true skb->h.raw
					*(unsigned short *)(buf + 2 + hoff + skb->csum) =
						csum_fold(
							// kernel does conceptual header too
							skb_copy_and_csum_bits(skb,
								skb_mac_header(skb) + hoff - skb->data,
								buf + 2 + hoff, len - hoff, 0));
#else
Line 898    Link Here 
Line 905    Link Here 
#endif
Line 907    Link Here 
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
					skb_copy_bits(skb,
						skb_mac_header(skb) - skb->data, buf + 2, len);
#else
Line 909    Link Here 
#endif
Line 911    Link Here 
				kfree(buf);
Line 912    Link Here 
			kfree(buf);
Line 923    Link Here 
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
			hw_recv(hw, skb_mac_header(skb), skb->data - skb_mac_header(skb) + skb->len);
#else
Line 924    Link Here 
#endif
Line 1011    Link Here 
#if WIRELESS_EXT < 19
Line 1013    Link Here 
#endif
Line 6    Link Here 
// $Id: prlnet.h,v 1.2 2006/02/06 13:46:49 mihailsi Exp $
// $Id: prlnet.h 6855 2006-02-06 13:46:49Z mihailsi $
Line 72    Link Here 
MODULE_DESCRIPTION("Transparen ethernet bridge");
MODULE_DESCRIPTION("Virtual ethernet card");
 Lines 75-77    Link Here 
// Version
//static const char *version = "VMVirtualNIC.c:v1.01 VirtualNIC driver from Parallels Inc. http://www.parallelssoft.com/";
Line 79    Link Here 
struct net_device* dev;
struct net_device* devs[5];
Line 99    Link Here 
Line 101    Link Here 
};
}
Line 121    Link Here 
 
Line 123    Link Here 
};
}
Line 202    Link Here 
int maxdev = 1;
#if defined(module_param)
  module_param(maxdev, int, 0);
#elif defined(MODULE_PARM)
  MODULE_PARM(maxdev, "i");
#endif
 Lines 217-222    Link Here 
        // MAC address is hardwired to that value as in windows version
    // MAC address is hardwired to that value as in windows version
        unsigned char station_addr[6] = { 0x00, 0x01, 0x23, 0x45, 0xBE, 0xEF };
	static const unsigned char station_addr[5][6] = {
#if 0
		{ 0x00, 0x01, 0x23, 0x45, 0xBE, 0xEF },
    hypervisorPresentInSystem(); /* fake call to hypervisor -- ms */
		{ 0x00, 0x01, 0x23, 0x45, 0xCA, 0xFE },
#endif
		{ 0x00, 0x01, 0x23, 0x45, 0xDA, 0xCE },
		{ 0x00, 0x01, 0x23, 0x45, 0xEC, 0xAE },
		{ 0x00, 0x01, 0x23, 0x45, 0xFA, 0xDE }
	};
	int i;
	if (maxdev < 0)
		maxdev = 1;
	if (maxdev > 5)
		maxdev = 5;
	for (i = 0; i < maxdev; ++i) {
Line 224    Link Here 
        dev = alloc_etherdev(sizeof(struct net_device_stats));
		devs[i] = alloc_etherdev(sizeof(struct net_device_stats));
 Lines 226-229    Link Here 
	dev = init_etherdev(0, 0);
		devs[i] = init_etherdev(0, 0);
	// May be it needed ?
		ether_setup(devs[i]);
	ether_setup(dev);
		devs[i]->priv = kmalloc(sizeof(struct net_device_stats), GFP_KERNEL);
	dev->priv = kmalloc(sizeof(struct net_device_stats), GFP_KERNEL);
 Lines 232-242    Link Here 
	dev_alloc_name(dev, "vnic%d");
		dev_alloc_name(devs[i], "vnic%d");
	// Set MAC address
		// Set MAC address
	memcpy(dev->dev_addr, station_addr, ETH_ALEN);
		memcpy(devs[i]->dev_addr, station_addr[i], ETH_ALEN);
	memset(dev->priv, 0, sizeof(struct net_device_stats));
		memset(devs[i]->priv, 0, sizeof(struct net_device_stats));
	// Set functions
		// Set functions
	dev->hard_start_xmit = &VNICXmit;
		devs[i]->hard_start_xmit = VNICXmit;
	dev->get_stats = &VNICGetStats;
		devs[i]->get_stats = VNICGetStats;
	dev->open = &VNICOpen;
		devs[i]->open = VNICOpen;
	dev->stop = &VNICClose;
		devs[i]->stop = VNICClose;
	dev->set_mac_address = &VNICSetMAC;
		devs[i]->set_mac_address = VNICSetMAC;
Line 244    Link Here 
	SET_MODULE_OWNER(dev);
		SET_MODULE_OWNER(devs[i]);
Line 248    Link Here 
	register_netdev(dev);
		register_netdev(devs[i]);
 Lines 250-252    Link Here 
	}
	return(0);
	return 0;
};
}
Line 269    Link Here 
	int i;
 Lines 270-272    Link Here 
        if (dev)
	for (i = 0; i < 5; ++i) {
	{
		if (devs[i]) {
	   ndstat = dev->priv;
			ndstat = devs[i]->priv;
Line 274    Link Here 
           unregister_netdev(dev);
			unregister_netdev(devs[i]);
Line 276    Link Here 
	   free_netdev(dev);
			free_netdev(devs[i]);
 Lines 278-280    Link Here 
	   kfree(ndstat);
	   		kfree(ndstat);
	   dev->priv = NULL;
			devs[i]->priv = NULL;
	   kfree(dev);
			kfree(devs[i]);
Line 282    Link Here 
			devs[i] = NULL;
		}
 Lines 19-20    Link Here 
#ifndef __HYPERCALL_H__
#define __HYPERCALL_H__
#ifndef __PRL_HYPERCALL_H__
#define __PRL_HYPERCALL_H__
 Lines 115-116    Link Here 
#endif /* __PRL_HYPERCALL_H__ */
#endif /* __HYPERCALL_H__ */
 Lines 19-20    Link Here 
#ifndef __HYPERVISOR_H__
#ifndef __PRL_HYPERVISOR_H__
#define __HYPERVISOR_H__
#define __PRL_HYPERVISOR_H__
Line 34    Link Here 
# include "compat_memory.h"
Line 130    Link Here 
    kmem_cache_t *vmStateCache;
    kmem_cache_compat *vmStateCache;
Line 177    Link Here 
#endif /* __HYPERVISOR_H__ */
#endif /* __PRL_HYPERVISOR_H__ */
Line 25    Link Here 
#include "compat_memory.h"
Line 169    Link Here 
    if (!(hypState.vmStateCache = kmem_cache_create(VMSTATE_SLABNAME, sizeof(struct hyp_vmstate_t), 0,
    if (!(hypState.vmStateCache = compat_kmem_cache_create(VMSTATE_SLABNAME, sizeof(struct hyp_vmstate_t), 0,
Line 35    Link Here 
/// Definitions of AMD CPUID function to get SVM revision and feature identification
#define CPUID_SVM_REV 0x8000000a
Line 38    Link Here 
/// Definition of bit SVM_LOCK in edx after CPUID_SVM_REV fn
#define SVM_LOCK (1 << 2)
/// Definition of bit SVM Disabled in VM_CR SMR
#define VM_CR_SVMDIS (1 << 4)
Line 46    Link Here 
/// Definition of address of VM_CR SMR
#define SMR_VM_CR 0xc0010114
/**
 * Check CPU provider.
 */
static __inline__ int is_amd()
{    
	unsigned int _ebx, _ecx, _edx;
	__asm__ __volatile__(
		"cpuid	\n\t"
		: /* out */ "=b" (_ebx), "=c" (_ecx), "=d" (_edx)
		: /* in  */ "a" (0)
		: /* clo */ "memory" 
		);
	// "AuthenticAMD"
	if ((_ebx == 0x68747541) &&
	(_ecx == 0x444D4163) &&
	(_edx == 0x69746E65))
		return 1;
	return 0;
}
 Lines 66-67    Link Here 
    /* Check SVM bit in CPUID extended features */    
	// Don't initialize this variables !!!
    return cpuid_ecx(CPUID_PROCESSOR_SIGNATURE) & CPUID_SVM;
	// because gcc on OSx remove all checks with this variables
	// and we can get wrmsr on locked msr register (which cause GP#) -- ms
	unsigned long msr_edx, msr_eax;
	unsigned int cpuid_1_ecx;
	unsigned int cpuid_2_edx;
	if (!is_amd())
		return 0;
	msr_edx = 0;
	msr_eax = 0;
	
	// Check SVM bit in CPUID extended features
	cpuid_1_ecx = cpuid_ecx(CPUID_PROCESSOR_SIGNATURE);
	cpuid_2_edx = 0;
	// Check SVM bit in CPUID feature indentifiers
	if ((cpuid_1_ecx & CPUID_SVM) == 0)
		return 0; // SVM not available
    
	// Get VM_CR MSR value
	rdmsr(SMR_VM_CR, msr_eax, msr_edx);
	
	if((msr_eax & VM_CR_SVMDIS) == 0)
	{
		// set EFER.SVME
		rdmsr(MSR_IA32_EFER, msr_eax, msr_edx);
		wrmsr(MSR_IA32_EFER, msr_eax | EFER_SVME, msr_edx);
		return 1;	// SVM allowed
	}
	// CPUID SVM Revision and Feature Identification EDX
	cpuid_2_edx = cpuid_edx(CPUID_SVM_REV);
	if((cpuid_2_edx & SVM_LOCK) == 0)
	{
		return 0;	// SVM disabled at bios not unlockable
	}
	return 0;	// SVM disabled with key
Line 71    Link Here 
Line 76    Link Here 
/**
 * Check CPU provider.
 */
static __inline__ int is_intelPW22()
{    
	unsigned int _ebx, _ecx, _edx;
	__asm__ __volatile__(
		"cpuid	\n\t"
		: /* out */ "=b" (_ebx), "=c" (_ecx), "=d" (_edx)
		: /* in  */ "a" (0)
		: /* clo */ "memory" 
		);
	// "GenuineIntel"
	if ((_ebx == 0x756e6547) &&
	(_ecx == 0x6c65746e) &&
	(_edx == 0x49656e69))
		return 1;
	return 0;
}
Line 97    Link Here 
    if (!is_intelPW22())
         return 0;
Line 1    Link Here 
KSRC ?= /lib/modules/$(shell uname -r)/build
Line 5    Link Here 
	cd drv_main/ && $(MAKE) && cd ..
	cd drv_main/ && $(MAKE) KSRC=${KSRC} && cd ..