This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] Xen-unstable panic: FATAL PAGE FAULT

To: "Keir Fraser" <keir.fraser@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Xen-unstable panic: FATAL PAGE FAULT
From: "Jan Beulich" <JBeulich@xxxxxxxxxx>
Date: Tue, 31 Aug 2010 17:22:03 +0100
Cc: MaoXiaoyun <tinnycloud@xxxxxxxxxxx>, xen devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Tue, 31 Aug 2010 09:22:49 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C8A2E5D3.21901%keir.fraser@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4C7D36CB0200007800013394@xxxxxxxxxxxxxxxxxx> <C8A2E5D3.21901%keir.fraser@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
>>> On 31.08.10 at 18:01, Keir Fraser <keir.fraser@xxxxxxxxxxxxx> wrote:
> On 31/08/2010 16:07, "Jan Beulich" <JBeulich@xxxxxxxxxx> wrote:
>>>>> On 31.08.10 at 16:49, Keir Fraser <keir.fraser@xxxxxxxxxxxxx> wrote:
>>> I'm cc'ing Jan to see what we can get away with in doing arithmetic on
>>> page_info pointers. What's the guaranteed smallest aligned contiguous ranges
>>> of mfn in the frame_table now, Jan? (i.e., ranges in which adjacent
>>> page_info structs relate to adjacent MFNs)
>> Any range of struct page_info-s that crosses a 2Mb boundary is
>> unsafe to make assumptions upon
> Where is even that constraint ensured in the code? I can't see it (I would
> have assumed that pfn_pdx_hole_setup() would be ensuring it).

That's somewhat implicit: srat_parse_regions() gets passed an
address that is at least BOOTSTRAP_DIRECTMAP_END (i.e. 4G).
Thus srat_parse_regions() starts off with a mask with the lower
32 bits all set (only more bits can get set subsequently). Thus
the earliest zero bit pfn_pdx_hole_setup() can find is bit 20
(due to the >> PAGE_SHIFT in the invocation). Consequently
the smallest chunk where arithmetic is valid really is 4Gb, not
256Mb as I first wrote.


Xen-devel mailing list