Print this page
13902 Fix for 13717 may break 8-disk raidz2
13915 installctx() blocking allocate causes problems
Portions contributed by: Jerry Jelinek <gjelinek@gmail.com>
Change-Id: I934d69946cec42630fc541fa8c7385b862b69ca2

*** 18,28 **** * * CDDL HEADER END */ /* * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved. ! * Copyright 2018 Joyent, Inc. */ /* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T */ /* All Rights Reserved */ --- 18,28 ---- * * CDDL HEADER END */ /* * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved. ! * Copyright 2021 Joyent, Inc. */ /* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T */ /* All Rights Reserved */
*** 91,100 **** --- 91,103 ---- * The SI86V86 subsystem call of the SYSI86 system call * supports only one subcode -- V86SC_IOPL. */ case SI86V86: if (arg1 == V86SC_IOPL) { + #if defined(__xpv) + struct ctxop *ctx; + #endif struct regs *rp = lwptoregs(ttolwp(curthread)); greg_t oldpl = rp->r_ps & PS_IOPL; greg_t newpl = arg2 & PS_IOPL; /*
*** 103,116 **** */ if (newpl > oldpl && (error = secpolicy_sys_config(CRED(), B_FALSE)) != 0) return (set_errno(error)); #if defined(__xpv) kpreempt_disable(); installctx(curthread, NULL, xen_disable_user_iopl, xen_enable_user_iopl, NULL, NULL, ! xen_disable_user_iopl, NULL); xen_enable_user_iopl(); kpreempt_enable(); #else rp->r_ps ^= oldpl ^ newpl; #endif --- 106,120 ---- */ if (newpl > oldpl && (error = secpolicy_sys_config(CRED(), B_FALSE)) != 0) return (set_errno(error)); #if defined(__xpv) + ctx = installctx_preallocate(); kpreempt_disable(); installctx(curthread, NULL, xen_disable_user_iopl, xen_enable_user_iopl, NULL, NULL, ! xen_disable_user_iopl, NULL, ctx); xen_enable_user_iopl(); kpreempt_enable(); #else rp->r_ps ^= oldpl ^ newpl; #endif