brintos

brintos / linux-shallow public Read only

0
0
Text · 1.0 KiB · 30b71b1 Raw
49 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright 2016, Michael Ellerman, IBM Corp.4 */5 6#include <stdio.h>7#include <stdlib.h>8#include <string.h>9#include <sys/mman.h>10#include <unistd.h>11 12#include <asm/cputable.h>13 14#include "utils.h"15 16#define SIZE (64 * 1024)17 18int test_prot_sao(void)19{20	char *p;21 22	/*23	 * SAO was introduced in 2.06 and removed in 3.1. It's disabled in24	 * guests/LPARs by default, so also skip if we are running in a guest.25	 */26	SKIP_IF(!have_hwcap(PPC_FEATURE_ARCH_2_06) ||27		have_hwcap2(PPC_FEATURE2_ARCH_3_1) ||28		access("/proc/device-tree/rtas/ibm,hypertas-functions", F_OK) == 0);29 30	/*31	 * Ensure we can ask for PROT_SAO.32	 * We can't really verify that it does the right thing, but at least we33	 * confirm the kernel will accept it.34	 */35	p = mmap(NULL, SIZE, PROT_READ | PROT_WRITE | PROT_SAO,36		 MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);37	FAIL_IF(p == MAP_FAILED);38 39	/* Write to the mapping, to at least cause a fault */40	memset(p, 0xaa, SIZE);41 42	return 0;43}44 45int main(void)46{47	return test_harness(test_prot_sao, "prot-sao");48}49