1. In a data processing system, a method comprising: determining when an additional large virtual page of memory is required; performing a first phase page promotion to move one or more smaller pages that are of a first type from within a target memory location to another memory location; and when the first phase page promotion fails to provide sufficient contiguous small virtual pages to combine into a large virtual page, dynamically implementing a second phase page promotion to move one or more small pages that are of a second type from within the target memory location to another memory location, such that sufficient contiguous small, unused virtual pages are available for combining into the large virtual page.