Deleted Added
full compact
slb.c (215159) slb.c (217451)
1/*-
2 * Copyright (c) 2010 Nathan Whitehorn
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *

--- 9 unchanged lines hidden (view full) ---

18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2010 Nathan Whitehorn
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *

--- 9 unchanged lines hidden (view full) ---

18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/powerpc/aim/slb.c 215159 2010-11-12 04:18:19Z nwhitehorn $
26 * $FreeBSD: head/sys/powerpc/aim/slb.c 217451 2011-01-15 19:16:05Z andreast $
27 */
28
29#include <sys/param.h>
30#include <sys/kernel.h>
31#include <sys/lock.h>
32#include <sys/mutex.h>
33#include <sys/proc.h>
34#include <sys/systm.h>

--- 160 unchanged lines hidden (view full) ---

195 setbit(&parent->ua_alloc, idx);
196
197 return (inter);
198}
199
200uint64_t
201kernel_va_to_slbv(vm_offset_t va)
202{
27 */
28
29#include <sys/param.h>
30#include <sys/kernel.h>
31#include <sys/lock.h>
32#include <sys/mutex.h>
33#include <sys/proc.h>
34#include <sys/systm.h>

--- 160 unchanged lines hidden (view full) ---

195 setbit(&parent->ua_alloc, idx);
196
197 return (inter);
198}
199
200uint64_t
201kernel_va_to_slbv(vm_offset_t va)
202{
203 uint64_t esid, slbv;
203 uint64_t slbv;
204
204
205 esid = (uintptr_t)va >> ADDR_SR_SHFT;
206
207 /* Set kernel VSID to deterministic value */
208 slbv = (KERNEL_VSID((uintptr_t)va >> ADDR_SR_SHFT)) << SLBV_VSID_SHIFT;
209
210 /* Figure out if this is a large-page mapping */
211 if (hw_direct_map && va < VM_MIN_KERNEL_ADDRESS) {
212 /*
213 * XXX: If we have set up a direct map, assumes
214 * all physical memory is mapped with large pages.

--- 265 unchanged lines hidden (view full) ---

480}
481
482static void *
483slb_uma_real_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait)
484{
485 static vm_offset_t realmax = 0;
486 void *va;
487 vm_page_t m;
205 /* Set kernel VSID to deterministic value */
206 slbv = (KERNEL_VSID((uintptr_t)va >> ADDR_SR_SHFT)) << SLBV_VSID_SHIFT;
207
208 /* Figure out if this is a large-page mapping */
209 if (hw_direct_map && va < VM_MIN_KERNEL_ADDRESS) {
210 /*
211 * XXX: If we have set up a direct map, assumes
212 * all physical memory is mapped with large pages.

--- 265 unchanged lines hidden (view full) ---

478}
479
480static void *
481slb_uma_real_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait)
482{
483 static vm_offset_t realmax = 0;
484 void *va;
485 vm_page_t m;
488 int pflags;
489
490 if (realmax == 0)
491 realmax = platform_real_maxaddr();
492
493 *flags = UMA_SLAB_PRIV;
486
487 if (realmax == 0)
488 realmax = platform_real_maxaddr();
489
490 *flags = UMA_SLAB_PRIV;
494 if ((wait & (M_NOWAIT|M_USE_RESERVE)) == M_NOWAIT)
495 pflags = VM_ALLOC_INTERRUPT | VM_ALLOC_WIRED;
496 else
497 pflags = VM_ALLOC_SYSTEM | VM_ALLOC_WIRED;
498 if (wait & M_ZERO)
499 pflags |= VM_ALLOC_ZERO;
500
501 for (;;) {
502 m = vm_phys_alloc_contig(1, 0, realmax, PAGE_SIZE,
503 PAGE_SIZE);
504 if (m == NULL) {
505 if (wait & M_NOWAIT)
506 return (NULL);
507 VM_WAIT;

--- 45 unchanged lines hidden ---
491
492 for (;;) {
493 m = vm_phys_alloc_contig(1, 0, realmax, PAGE_SIZE,
494 PAGE_SIZE);
495 if (m == NULL) {
496 if (wait & M_NOWAIT)
497 return (NULL);
498 VM_WAIT;

--- 45 unchanged lines hidden ---