[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 7/8] xen: arm: use superpages in p2m when pages are suitably aligned
On Thu, 2014-06-12 at 10:00 +0100, Julien Grall wrote: > > On 12/06/14 08:30, Ian Campbell wrote: > > On Wed, 2014-06-11 at 23:19 +0100, Julien Grall wrote: > >> Hi Ian, > >> > >> While I was looking closer to this patch I found something strange. Why > >> all the callers of guest_physmap_add_page in the directory common don't > >> check that the function success to create the mapping? > > > > "directory common"? I don't get your meaning. > > Sorry, I meant xen/common/ I don't know the answer then. > >> [..] > >> > >>> + case INSERT: > >>> + if ( is_mapping_aligned(*addr, end_gpaddr, *maddr, level_size) && > >>> + /* We do not handle replacing an existing table with a > >>> superpage */ > >>> + (level == 3 || !p2m_table(orig_pte)) ) > >>> + { > >>> + /* New mapping is superpage aligned, make it */ > >>> + pte = mfn_to_p2m_entry(*maddr >> PAGE_SHIFT, mattr, t); > >>> + if ( level < 3 ) > >> > >> It's funny, sometimes you use level < 3 and some level != 3 (see in > >> ALLOCATE). > > > > True. > > > >> I think this pte.p2m.table set can be handled directly in > >> mfn_to_p2m_entry. This will avoid duplicating code. > > > > It can't because mfn_to_p2m_entry is used to create both table and > > mapping style entries. > > There is only on call where we don't override the pte.p2m.table bit (the > one at the end of p2m_create table). All of those other places *conditionally* set table. > I would move this extra test in the mfn_to_p2m_entry and override only > for this specific case. mfn_to_p2m_entry doesn't know either the level or whether the intention of the caller is to create a table or a mapping style entry. > >>> - /* Got the next page */ > >>> - addr += PAGE_SIZE; > >>> + rc = apply_one_level(d, &third[third_table_offset(addr)], > >>> + 3, flush_pt, op, > >>> + start_gpaddr, end_gpaddr, > >>> + &addr, &maddr, &flush, > >>> + mattr, t); > >>> + if ( rc < 0 ) goto out; > >> > >> Shall we redo the whole range if the mapping has failed here? > > > > s/redo/undo/? > > Undo sorry. I'm not sure, you could argue it either way I think. Is Arianna's series dealing with this in some way? Anyway, I think changing that behaviour would be a separate patch. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |