mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Merge branch 'linus' into efi/core, to pick up fixes
Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
commit
35dc9ec107
379 changed files with 3888 additions and 2056 deletions
|
|
@ -151,6 +151,8 @@ static DECLARE_WAIT_QUEUE_HEAD(balloon_wq);
|
|||
static void balloon_process(struct work_struct *work);
|
||||
static DECLARE_DELAYED_WORK(balloon_worker, balloon_process);
|
||||
|
||||
static void release_memory_resource(struct resource *resource);
|
||||
|
||||
/* When ballooning out (allocating memory to return to Xen) we don't really
|
||||
want the kernel to try too hard since that can trigger the oom killer. */
|
||||
#define GFP_BALLOON \
|
||||
|
|
@ -267,6 +269,20 @@ static struct resource *additional_memory_resource(phys_addr_t size)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPARSEMEM
|
||||
{
|
||||
unsigned long limit = 1UL << (MAX_PHYSMEM_BITS - PAGE_SHIFT);
|
||||
unsigned long pfn = res->start >> PAGE_SHIFT;
|
||||
|
||||
if (pfn > limit) {
|
||||
pr_err("New System RAM resource outside addressable RAM (%lu > %lu)\n",
|
||||
pfn, limit);
|
||||
release_memory_resource(res);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -316,7 +316,6 @@ static int evtchn_resize_ring(struct per_user_data *u)
|
|||
{
|
||||
unsigned int new_size;
|
||||
evtchn_port_t *new_ring, *old_ring;
|
||||
unsigned int p, c;
|
||||
|
||||
/*
|
||||
* Ensure the ring is large enough to capture all possible
|
||||
|
|
@ -346,20 +345,17 @@ static int evtchn_resize_ring(struct per_user_data *u)
|
|||
/*
|
||||
* Copy the old ring contents to the new ring.
|
||||
*
|
||||
* If the ring contents crosses the end of the current ring,
|
||||
* it needs to be copied in two chunks.
|
||||
* To take care of wrapping, a full ring, and the new index
|
||||
* pointing into the second half, simply copy the old contents
|
||||
* twice.
|
||||
*
|
||||
* +---------+ +------------------+
|
||||
* |34567 12| -> | 1234567 |
|
||||
* +-----p-c-+ +------------------+
|
||||
* |34567 12| -> |34567 1234567 12|
|
||||
* +-----p-c-+ +-------c------p---+
|
||||
*/
|
||||
p = evtchn_ring_offset(u, u->ring_prod);
|
||||
c = evtchn_ring_offset(u, u->ring_cons);
|
||||
if (p < c) {
|
||||
memcpy(new_ring + c, u->ring + c, (u->ring_size - c) * sizeof(*u->ring));
|
||||
memcpy(new_ring + u->ring_size, u->ring, p * sizeof(*u->ring));
|
||||
} else
|
||||
memcpy(new_ring + c, u->ring + c, (p - c) * sizeof(*u->ring));
|
||||
memcpy(new_ring, old_ring, u->ring_size * sizeof(*u->ring));
|
||||
memcpy(new_ring + u->ring_size, old_ring,
|
||||
u->ring_size * sizeof(*u->ring));
|
||||
|
||||
u->ring = new_ring;
|
||||
u->ring_size = new_size;
|
||||
|
|
|
|||
Loading…
Reference in a new issue