Hi Marc, > -----Original Message----- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Marc Sune > Sent: Friday, October 17, 2014 10:17 PM > To: <dev at dpdk.org> > Subject: [dpdk-dev] Memory corruption in librte_ether? > > Hi all, > > I was rebasing the KNI mempool v4 patch(I have it finalised, but wanted > to check) to the latest master HEAD > (075e064089e1c2b6899db58c69be1a387eb5ffa7) when I ran into problems > with > the current KNI example with em interfaces in a VM. I then switched to > master's head and retried (so without the KNI mempool patch!) with the > *same behaviour*. Behaviour here listed is with master head, so nothing > to do with the patch I am working on. > > The *VM*, emulated with qemu has 4 e1000 interfaces attached to several > bridges. qmeu version 1.1.2 running in debian 7 64bit. With this setup I > get the error: > [...] > Which seems to indicate rte_eth_dev_info_get() is somehow corrupting > memory(??). But I haven't figure out the problem (yet). I suspect of: > > commit fbde27f19ab8f1d386868275bd8c016e693cf073 > Author: Pablo de Lara <pablo.de.lara.guarch at intel.com> > Date: Wed Oct 1 10:49:04 2014 +0100 > > ethdev: get default Rx/Tx configuration from dev info > > Many sample apps use duplicated code to set rte_eth_txconf and > rte_eth_rxconf > structures. This patch allows the user to get a default optimal > RX/TX configuration > through rte_eth_dev_info get, and still any parameters may be > tweaked as wished, > before setting up queues. > > Besides, if a NULL pointer is passed to rte_eth_rx_queue_setup or > rte_eth_tx_queue_setup, these functions get internally the default > RX/TX > configuration for the user. > > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch at intel.com> > Reviewed-by: Bruce Richardson <bruce.richardson at intel.com> > Acked-by: David Marchand <david.marchand at 6wind.com> > [Thomas: split patch] > > commit a30268e9a2d0618902e8cf96b90b27db4fb02d54 > Author: Pablo de Lara <pablo.de.lara.guarch at intel.com> > Date: Wed Oct 1 10:49:03 2014 +0100 > > ethdev: reset whole dev info structure before filling > > To guarantee that RX/TX configuration structures are reseted > before modifying them, plus the other dev info fields, > dev info structure is zeroed beforehand. > > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch at intel.com> > Acked-by: David Marchand <david.marchand at 6wind.com> > > > Can anyone confirm it?
I just pushed a fix for that problem. Indeed, the dev_info structure was polluted, because I was calling the specific dev_info_get function in the PMDs, and not calling rte_eth_dev_info_get in rte_ethdev.c, which means that the dev_info structure was not being reseted. In your case, em PMD does not overwrite the rte_eth_rxconf and rte_eth_txconf structures, and then you find random data in those structures. Well spotted and thanks very much for all the details. I would appreciate if you could verify that this patch works for you. Thanks, Pablo > > Marc > > p.s. Has someone managed to run a dpdk app with valgrind?