On Mon, 2010-06-07 at 20:29 +0100, M A Young wrote:
> On Thu, 3 Jun 2010, Dave McCracken wrote:
>
> > On Thursday, June 03, 2010, Ian Campbell wrote:
> >>> This seems to be about line 343 of drivers/xen/balloon.c in the
> >>> subroutine decrease_reservation which is
> >>>
> >>> for (j = 0; j < balloon_npages; j++, lpfn++, mfn++) {
> >>> if ((discontig_frame_list[j] =
> >>> pfn_to_mfn(lpfn))
> >>>
> >>> != mfn)
> >>>
> >>> discontig_free = 1;
> >>>
> >>> set_phys_to_machine(lpfn, INVALID_P2M_ENTRY);
> >>>
> >>> /* here */ if (!PageHighMem(page)) {
> >>>
> >>> ret = HYPERVISOR_update_va_mapping(
> >>> (unsigned long)__va(lpfn <<
> >>>
> >>> PAGE_SHIFT),
> >>>
> >>> __pte_ma(0), 0);
> >>> BUG_ON(ret);
> >>> }
> >>> }
> >>>
> >>>
> >>>> From what I can tell page is meaningless in this context as it is just
> >>>
> >>> a temporary variable used in the previous loop, so I would
> >>> guess that PageHighMem should be checking something else, or page should
> >>> be set somewhere eg. at a guess page=pfn_to_page(lpfn);
> >>
> >> That would be my guess also. CCing Dave McCracken who looks to have
> >> introduced this code in 0e898d5e "Add hugepage support to balloon
> >> driver"
> >
> > Yes, that is definitely an error. The offending line should be
> >
> > if (!PageHighMem(pfn_to_page(lpfn))) {
> >
> > Dave McCracken
> > Oracle Corp.
>
> I have tested the corrected line and it does fix the crash I was seeing.
Please can one of you generate a patch and send it to the list.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|