The VMWare TSC mapping uses a hook to RDPMC to read the physical TSC
in the case of VMware ESXi.
Signed-off-by: Damien Millescamps <damien.millescamps@6wind.com> Acked-by: Jean-Mickael Guerin <jmg@6wind.com> Acked-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Introduce new option --vmware-tsc-map, ignored if
CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT is not set.
Default is CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=y.
if CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT is set:
rte_rdtsc() selects at runtime between Vmware mapping of
TSC or native TSC
else
rte_rdtsc() always uses native rdtsc.
When running DPDK on VMware guest, enable --vmware-tsc-map to
read the physical TSC.
Caution: ESXi should pass monitor_control.pseudo_perfctr = TRUE
othewise it results in general protection fault.
Both logging and calls to panic are never in the critical path.
Use the GCC attribute cold to mark these functions as cold,
which generates more optimised code.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Reviewed-by: Vincent Jardin <vincent.jardin@6wind.com>
By default, DPDK based applications would only allow logging
to syslog as "rte", DAEMON; but for any production application more
control is desired to allow using actual application name and
overriding the facility.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Reviewed-by: Vincent Jardin <vincent.jardin@6wind.com>
Ivan Boule [Thu, 22 Sep 2011 16:01:35 +0000 (18:01 +0200)]
app: fix volatile read for GCC >= 4.6
When a memory address must be read, for instance a [mapped] PCI register,
the read value is assigned to a local variable that is not used after,
as for instance:
x = *((uint8_t *) mem_addr);
Such instructions do not compile with gcc 4.6.
The fix consists in adding the "volatile" attribute to the accessed data type
and to not assign the read value:
*((volatile uint8_t *) mem_addr);
Signed-off-by: Ivan Boule <ivan.boule@6wind.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
Ivan Boule [Tue, 26 Apr 2011 14:45:43 +0000 (16:45 +0200)]
app/testpmd: fix compliance with __rte_mbuf_sanity_check()
Build mbuf and lists of mbufs in a way compliant with the checks performed
by the function __rte_mbuf_sanity_check() when CONFIG_RTE_LIBRTE_MBUF_DEBUG=y
Signed-off-by: Ivan Boule <ivan.boule@6wind.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
Adrien Mazarguil [Wed, 19 Dec 2012 16:05:54 +0000 (17:05 +0100)]
lib: fix non-C99 macros definitions in exported headers
The original definitions prevent external programs/libraries from compiling
without warnings when using these headers and -std=gnu99 (relaxed C99 mode).
Nicolas Dichtel [Wed, 20 Feb 2013 08:56:56 +0000 (09:56 +0100)]
igb_uio: fix build with kernel >= 3.8
__devinit has been removed in linux commit 54b956b903
("Remove __dev* markings from init.h", 3.8-rc4).
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Ivan Boule <ivan.boule@6wind.com> Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Thomas Monjalon [Thu, 2 Aug 2012 15:17:37 +0000 (17:17 +0200)]
eal: fix access to huge page with high address
The returned value of lseek is a virtual address
which can be different from the offset.
Indeed, if the return address has a 64-bit canonical form,
the 16 higher bits are all 1 if bit 47 is 1.
So the check was wrong. It is better to test against an error value.
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: Damien Millescamps <damien.millescamps@6wind.com>
Dongsu Han [Mon, 6 May 2013 12:06:51 +0000 (12:06 +0000)]
app/testpmd: fix refcnt in mbuf allocation
test-pmd txonly leaks mbuf from the pool.
The function tx_mbuf_alloc() does not change the refcnt
and the refcnt is 0 when it is first allocated.
However, rte_pktmbuf_free_seg called by the driver's xmit code decrements
reference count to -1. So mbuf never goes back to the pool.
As a result, txonly can't send packets after it exhausts the mempool.
The function tx_mbuf_alloc() was getting mbuf directly from mempool and so
was bypassing mbuf API.
The dedicated function is rte_pktmbuf_alloc() but it is much slower because
it does unnecessary initializations in rte_pktmbuf_reset().
By using the internal API __rte_mbuf_raw_alloc(), refcnt is correctly handled
without adding too much overload.
Signed-off-by: Dongsu Han <dongsuh@cs.cmu.edu> Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>