In c/s 21038, console_init_postirq frees default static ring buffer if a dynamic one was obtained. This makes dom0 can use the default static ring buffer which is in BSS region, but xen_in_range didn''t remove the region from BSS region which won''t be mapped in VT-d page table, so it causes problems when a device DMAs to that region. To fix this issue, 1) remove the freed region from BSS region in xen_in_range; 2) don''t free default static ring buffer. Method 1) can fix it cleanly, but maybe need many changes. Method 2) is simple, but it wastes some resources. Keir / Jan, what''s your opinion? Regards, Weidong _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Allocate the static buffer in initdata, and always require to dynamically allocate a replacement buffer during Xen boot. The latter allocation should surely succeed since it happens so early. Goodness knows why I applied that patch so late during 4.0.0 release cycle. -- Keir On 22/04/2010 10:35, "Han, Weidong" <weidong.han@intel.com> wrote:> In c/s 21038, console_init_postirq frees default static ring buffer if a > dynamic one was obtained. This makes dom0 can use the default static ring > buffer which is in BSS region, but xen_in_range didn''t remove the region from > BSS region which won''t be mapped in VT-d page table, so it causes problems > when a device DMAs to that region. To fix this issue, 1) remove the freed > region from BSS region in xen_in_range; 2) don''t free default static ring > buffer. Method 1) can fix it cleanly, but maybe need many changes. Method 2) > is simple, but it wastes some resources. > > Keir / Jan, what''s your opinion? > > Regards, > Weidong > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
I''ve fixed this as xen-unstable:21225. -- Keir On 22/04/2010 11:57, "Keir Fraser" <keir.fraser@eu.citrix.com> wrote:> Allocate the static buffer in initdata, and always require to dynamically > allocate a replacement buffer during Xen boot. The latter allocation should > surely succeed since it happens so early. > > Goodness knows why I applied that patch so late during 4.0.0 release cycle. > > -- Keir > > On 22/04/2010 10:35, "Han, Weidong" <weidong.han@intel.com> wrote: > >> In c/s 21038, console_init_postirq frees default static ring buffer if a >> dynamic one was obtained. This makes dom0 can use the default static ring >> buffer which is in BSS region, but xen_in_range didn''t remove the region from >> BSS region which won''t be mapped in VT-d page table, so it causes problems >> when a device DMAs to that region. To fix this issue, 1) remove the freed >> region from BSS region in xen_in_range; 2) don''t free default static ring >> buffer. Method 1) can fix it cleanly, but maybe need many changes. Method 2) >> is simple, but it wastes some resources. >> >> Keir / Jan, what''s your opinion? >> >> Regards, >> Weidong >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Han, Weidong
2010-Apr-23 03:39 UTC
RE: [Xen-devel] BSS region in xen_in_range is incorrect
It works for me. Thanks. Regards, Weidong -----Original Message----- From: Keir Fraser [mailto:keir.fraser@eu.citrix.com] Sent: Friday, April 23, 2010 12:45 AM To: Han, Weidong; Jan Beulich Cc: xen-devel@lists.xensource.com Subject: Re: [Xen-devel] BSS region in xen_in_range is incorrect I''ve fixed this as xen-unstable:21225. -- Keir On 22/04/2010 11:57, "Keir Fraser" <keir.fraser@eu.citrix.com> wrote:> Allocate the static buffer in initdata, and always require to dynamically > allocate a replacement buffer during Xen boot. The latter allocation should > surely succeed since it happens so early. > > Goodness knows why I applied that patch so late during 4.0.0 release cycle. > > -- Keir > > On 22/04/2010 10:35, "Han, Weidong" <weidong.han@intel.com> wrote: > >> In c/s 21038, console_init_postirq frees default static ring buffer if a >> dynamic one was obtained. This makes dom0 can use the default static ring >> buffer which is in BSS region, but xen_in_range didn''t remove the region from >> BSS region which won''t be mapped in VT-d page table, so it causes problems >> when a device DMAs to that region. To fix this issue, 1) remove the freed >> region from BSS region in xen_in_range; 2) don''t free default static ring >> buffer. Method 1) can fix it cleanly, but maybe need many changes. Method 2) >> is simple, but it wastes some resources. >> >> Keir / Jan, what''s your opinion? >> >> Regards, >> Weidong >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Thank you Keir! Jan>>> Keir Fraser <keir.fraser@eu.citrix.com> 22.04.10 18:44 >>>I''ve fixed this as xen-unstable:21225. -- Keir On 22/04/2010 11:57, "Keir Fraser" <keir.fraser@eu.citrix.com> wrote:> Allocate the static buffer in initdata, and always require to dynamically > allocate a replacement buffer during Xen boot. The latter allocation should > surely succeed since it happens so early. > > Goodness knows why I applied that patch so late during 4.0.0 release cycle. > > -- Keir > > On 22/04/2010 10:35, "Han, Weidong" <weidong.han@intel.com> wrote: > >> In c/s 21038, console_init_postirq frees default static ring buffer if a >> dynamic one was obtained. This makes dom0 can use the default static ring >> buffer which is in BSS region, but xen_in_range didn''t remove the region from >> BSS region which won''t be mapped in VT-d page table, so it causes problems >> when a device DMAs to that region. To fix this issue, 1) remove the freed >> region from BSS region in xen_in_range; 2) don''t free default static ring >> buffer. Method 1) can fix it cleanly, but maybe need many changes. Method 2) >> is simple, but it wastes some resources. >> >> Keir / Jan, what''s your opinion? >> >> Regards, >> Weidong >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xensource.com >> http://lists.xensource.com/xen-devel > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel