Hi Ian, I believe there''s a problem with the 2.6.18 reference tree backport of 48856286b64e: "xen/netback: shutdown the ring if it contains garbage", which is c/s 1219. While the version in Linus'' tree should be fine, as xen_netbk_tx_action runs in a kthread, the 2.6.18 version needs something different. In 2.6.18 net_tx_action is a tasklet, thus calling xenvif_carrier_off from it is problematic due to needing the rtnl mutex. A proposal I have that I haven''t tried yet is for netbk_fatal_tx_err to schedule xenvif_carrier_off in a workqueue. This is a bit ugly though since the main point of xenvif_carrier_off is to queue linkwatch work. I''m wondering if you or anyone else have other suggestions. Thanks, Drew
On Tue, 2013-02-19 at 13:51 +0000, Andrew Jones wrote:> Hi Ian, > > I believe there''s a problem with the 2.6.18 reference tree backport of > 48856286b64e: "xen/netback: shutdown the ring if it contains garbage", > which is c/s 1219. While the version in Linus'' tree should be fine, > as xen_netbk_tx_action runs in a kthread, the 2.6.18 version needs > something different. In 2.6.18 net_tx_action is a tasklet, thus calling > xenvif_carrier_off from it is problematic due to needing the rtnl > mutex. A proposal I have that I haven''t tried yet is for > netbk_fatal_tx_err to schedule xenvif_carrier_off in a workqueue. This > is a bit ugly though since the main point of xenvif_carrier_off is to > queue linkwatch work. I''m wondering if you or anyone else have other > suggestions.Jan was looking into something of this nature, not sure wht the status is though. Ian.
>>> On 19.02.13 at 14:54, Ian Campbell <Ian.Campbell@citrix.com> wrote: > On Tue, 2013-02-19 at 13:51 +0000, Andrew Jones wrote: >> Hi Ian, >> >> I believe there''s a problem with the 2.6.18 reference tree backport of >> 48856286b64e: "xen/netback: shutdown the ring if it contains garbage", >> which is c/s 1219. While the version in Linus'' tree should be fine, >> as xen_netbk_tx_action runs in a kthread, the 2.6.18 version needs >> something different. In 2.6.18 net_tx_action is a tasklet, thus calling >> xenvif_carrier_off from it is problematic due to needing the rtnl >> mutex. A proposal I have that I haven''t tried yet is for >> netbk_fatal_tx_err to schedule xenvif_carrier_off in a workqueue. This >> is a bit ugly though since the main point of xenvif_carrier_off is to >> queue linkwatch work. I''m wondering if you or anyone else have other >> suggestions. > > Jan was looking into something of this nature, not sure wht the status > is though.http://xenbits.xen.org/hg/linux-2.6.18-xen.hg/rev/ff0befcaac09 Jan