sync with OpenBSD -current
This commit is contained in:
parent
c0feaae94d
commit
7aba15d530
@ -1959,7 +1959,6 @@
|
||||
./usr/share/man/man3/EVP_sha3_224.3
|
||||
./usr/share/man/man3/EVP_sm3.3
|
||||
./usr/share/man/man3/EVP_sm4_cbc.3
|
||||
./usr/share/man/man3/EVP_whirlpool.3
|
||||
./usr/share/man/man3/EXTENDED_KEY_USAGE_new.3
|
||||
./usr/share/man/man3/GENERAL_NAME_new.3
|
||||
./usr/share/man/man3/HMAC.3
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: fclose.3,v 1.10 2024/08/12 20:53:09 guenther Exp $
|
||||
.\" $OpenBSD: fclose.3,v 1.11 2024/08/30 03:44:48 guenther Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1990, 1991, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
@ -31,7 +31,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: August 12 2024 $
|
||||
.Dd $Mdocdate: August 30 2024 $
|
||||
.Dt FCLOSE 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -47,11 +47,8 @@ The
|
||||
function dissociates the named
|
||||
.Fa stream
|
||||
from its underlying file or set of functions.
|
||||
If the stream was being used for output then any buffered data is written
|
||||
first,
|
||||
while if the stream was being used for input then the underlying
|
||||
file position may be updated,
|
||||
as if via
|
||||
If the stream was being used for output, any buffered data is written
|
||||
first, using
|
||||
.Xr fflush 3 .
|
||||
.Sh RETURN VALUES
|
||||
Upon successful completion 0 is returned.
|
||||
@ -86,7 +83,7 @@ or
|
||||
The
|
||||
.Fn fclose
|
||||
function conforms to
|
||||
.St -p1003.1-2024 .
|
||||
.St -ansiC .
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Fn fclose
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: fclose.c,v 1.11 2024/08/12 20:53:09 guenther Exp $ */
|
||||
/* $OpenBSD: fclose.c,v 1.12 2024/08/30 03:44:48 guenther Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -47,7 +47,7 @@ fclose(FILE *fp)
|
||||
}
|
||||
FLOCKFILE(fp);
|
||||
WCIO_FREE(fp);
|
||||
r = __sflush(fp);
|
||||
r = fp->_flags & __SWR ? __sflush(fp) : 0;
|
||||
if (fp->_close != NULL && (*fp->_close)(fp->_cookie) < 0)
|
||||
r = EOF;
|
||||
if (fp->_flags & __SMBF)
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: fflush.3,v 1.16 2024/08/13 05:52:09 jmc Exp $
|
||||
.\" $OpenBSD: fflush.3,v 1.17 2024/08/30 03:44:48 guenther Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1990, 1991, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
@ -31,7 +31,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: August 13 2024 $
|
||||
.Dd $Mdocdate: August 30 2024 $
|
||||
.Dt FFLUSH 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -84,9 +84,7 @@ For input streams this discards any input read from the underlying object
|
||||
but not yet obtained via
|
||||
.Xr getc 3 ;
|
||||
this includes any text pushed back via
|
||||
.Xr ungetc 3
|
||||
or
|
||||
.Xr ungetwc 3 .
|
||||
.Xr ungetc 3 .
|
||||
.Sh RETURN VALUES
|
||||
Upon successful completion 0 is returned.
|
||||
Otherwise,
|
||||
@ -98,7 +96,9 @@ is set to indicate the error.
|
||||
.Bl -tag -width Er
|
||||
.It Bq Er EBADF
|
||||
.Fa stream
|
||||
is not an open stream.
|
||||
is not an open stream or, in the case of
|
||||
.Fn fflush ,
|
||||
not a stream open for writing.
|
||||
.El
|
||||
.Pp
|
||||
The function
|
||||
@ -116,7 +116,7 @@ for any of the errors specified for the routine
|
||||
The
|
||||
.Fn fflush
|
||||
function conforms to
|
||||
.St -p1003.1-2024 .
|
||||
.St -ansiC .
|
||||
.Sh HISTORY
|
||||
A predecessor
|
||||
.Fn flush
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: fflush.c,v 1.10 2024/08/12 20:53:09 guenther Exp $ */
|
||||
/* $OpenBSD: fflush.c,v 1.11 2024/08/30 03:44:48 guenther Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -33,7 +33,6 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "local.h"
|
||||
|
||||
/* Flush a single file, or (if fp is NULL) all files. */
|
||||
@ -45,7 +44,11 @@ fflush(FILE *fp)
|
||||
if (fp == NULL)
|
||||
return (_fwalk(__sflush_locked));
|
||||
FLOCKFILE(fp);
|
||||
r = __sflush(fp);
|
||||
if ((fp->_flags & (__SWR | __SRW)) == 0) {
|
||||
errno = EBADF;
|
||||
r = EOF;
|
||||
} else
|
||||
r = __sflush(fp);
|
||||
FUNLOCKFILE(fp);
|
||||
return (r);
|
||||
}
|
||||
@ -55,51 +58,30 @@ int
|
||||
__sflush(FILE *fp)
|
||||
{
|
||||
unsigned char *p;
|
||||
fpos_t off;
|
||||
int n, t;
|
||||
|
||||
t = fp->_flags;
|
||||
if (t & __SWR) {
|
||||
if ((p = fp->_bf._base) == NULL)
|
||||
return (0);
|
||||
if ((t & __SWR) == 0)
|
||||
return (0);
|
||||
|
||||
n = fp->_p - p; /* write this much */
|
||||
if ((p = fp->_bf._base) == NULL)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* Set these immediately to avoid problems with longjmp and to
|
||||
* allow exchange buffering (via setvbuf) in user write
|
||||
* function.
|
||||
*/
|
||||
fp->_p = p;
|
||||
fp->_w = t & (__SLBF|__SNBF) ? 0 : fp->_bf._size;
|
||||
n = fp->_p - p; /* write this much */
|
||||
|
||||
for (; n > 0; n -= t, p += t) {
|
||||
t = (*fp->_write)(fp->_cookie, (char *)p, n);
|
||||
if (t <= 0) {
|
||||
fp->_flags |= __SERR;
|
||||
return (EOF);
|
||||
}
|
||||
/*
|
||||
* Set these immediately to avoid problems with longjmp and to allow
|
||||
* exchange buffering (via setvbuf) in user write function.
|
||||
*/
|
||||
fp->_p = p;
|
||||
fp->_w = t & (__SLBF|__SNBF) ? 0 : fp->_bf._size;
|
||||
|
||||
for (; n > 0; n -= t, p += t) {
|
||||
t = (*fp->_write)(fp->_cookie, (char *)p, n);
|
||||
if (t <= 0) {
|
||||
fp->_flags |= __SERR;
|
||||
return (EOF);
|
||||
}
|
||||
} else if ((t & __SRD) && !(t & __SEOF)) {
|
||||
if (fp->_seek != __sseek || fp->_file < 0) {
|
||||
errno = EBADF;
|
||||
return EOF;
|
||||
}
|
||||
|
||||
off = fp->_r;
|
||||
if (HASUB(fp)) {
|
||||
off += fp->_ur;
|
||||
FREEUB(fp);
|
||||
}
|
||||
if (t & __SOFF) {
|
||||
off = fp->_offset - off;
|
||||
__sseek(fp->_cookie, off, SEEK_SET);
|
||||
} else if (off != 0)
|
||||
__sseek(fp->_cookie, -off, SEEK_CUR);
|
||||
|
||||
WCIO_FREE(fp);
|
||||
fp->_p = fp->_bf._base;
|
||||
fp->_r = 0;
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: freopen.c,v 1.18 2024/08/12 20:53:09 guenther Exp $ */
|
||||
/* $OpenBSD: freopen.c,v 1.19 2024/08/30 03:44:48 guenther Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -75,8 +75,9 @@ freopen(const char *file, const char *mode, FILE *fp)
|
||||
isopen = 0;
|
||||
wantfd = -1;
|
||||
} else {
|
||||
/* flush the stream; POSIX, not ANSI, requires this. */
|
||||
(void) __sflush(fp);
|
||||
/* flush the stream; ANSI doesn't require this. */
|
||||
if (fp->_flags & __SWR)
|
||||
(void) __sflush(fp);
|
||||
/* if close is NULL, closing is a no-op, hence pointless */
|
||||
isopen = fp->_close != NULL;
|
||||
if ((wantfd = fp->_file) < 0 && isopen) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: fseek.c,v 1.15 2024/08/12 20:53:09 guenther Exp $ */
|
||||
/* $OpenBSD: fseek.c,v 1.16 2024/08/30 03:44:48 guenther Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -116,8 +116,7 @@ fseeko(FILE *fp, off_t offset, int whence)
|
||||
/*
|
||||
* Can only optimise if:
|
||||
* reading (and not reading-and-writing);
|
||||
* not unbuffered;
|
||||
* not immediately after an fflush(); and
|
||||
* not unbuffered; and
|
||||
* this is a `regular' Unix file (and hence seekfn==__sseek).
|
||||
* We must check __NBF first, because it is possible to have __NBF
|
||||
* and __SOPT both set.
|
||||
@ -126,8 +125,6 @@ fseeko(FILE *fp, off_t offset, int whence)
|
||||
__smakebuf(fp);
|
||||
if (fp->_flags & (__SWR | __SRW | __SNBF | __SNPT))
|
||||
goto dumb;
|
||||
if (fp->_r == 0 && (fp->_p == NULL || fp->_p == fp->_bf._base))
|
||||
goto dumb;
|
||||
if ((fp->_flags & __SOPT) == 0) {
|
||||
if (seekfn != __sseek ||
|
||||
fp->_file < 0 || fstat(fp->_file, &st) == -1 ||
|
||||
@ -231,7 +228,7 @@ fseeko(FILE *fp, off_t offset, int whence)
|
||||
* do it. Allow the seek function to change fp->_bf._base.
|
||||
*/
|
||||
dumb:
|
||||
if (((fp->_flags & __SWR) && __sflush(fp)) ||
|
||||
if (__sflush(fp) ||
|
||||
(*seekfn)(fp->_cookie, (fpos_t)offset, whence) == POS_ERR) {
|
||||
FUNLOCKFILE(fp);
|
||||
return (EOF);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: ftell.c,v 1.12 2024/08/12 20:53:09 guenther Exp $ */
|
||||
/* $OpenBSD: ftell.c,v 1.13 2024/08/30 03:44:48 guenther Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
@ -55,8 +55,7 @@ ftello(FILE *fp)
|
||||
* adjust for buffered bytes.
|
||||
*/
|
||||
FLOCKFILE(fp);
|
||||
if (fp->_flags & __SWR)
|
||||
__sflush(fp); /* may adjust seek offset on append stream */
|
||||
__sflush(fp); /* may adjust seek offset on append stream */
|
||||
if (fp->_flags & __SOFF)
|
||||
pos = fp->_offset;
|
||||
else {
|
||||
|
@ -29,9 +29,9 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $OpenBSD: exit.3,v 1.17 2024/08/12 20:53:09 guenther Exp $
|
||||
.\" $OpenBSD: exit.3,v 1.18 2024/08/30 03:44:48 guenther Exp $
|
||||
.\"
|
||||
.Dd $Mdocdate: August 12 2024 $
|
||||
.Dd $Mdocdate: August 30 2024 $
|
||||
.Dt EXIT 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -54,7 +54,9 @@ Call the functions registered with the
|
||||
.Xr atexit 3
|
||||
function, in the reverse order of their registration.
|
||||
.It
|
||||
Flush and close all open streams.
|
||||
Flush all open output streams.
|
||||
.It
|
||||
Close all open streams.
|
||||
.It
|
||||
Unlink all files created with the
|
||||
.Xr tmpfile 3
|
||||
@ -77,7 +79,6 @@ function never returns.
|
||||
.Sh SEE ALSO
|
||||
.Xr _exit 2 ,
|
||||
.Xr atexit 3 ,
|
||||
.Xr fflush 3 ,
|
||||
.Xr intro 3 ,
|
||||
.Xr sysexits 3 ,
|
||||
.Xr tmpfile 3
|
||||
@ -85,7 +86,7 @@ function never returns.
|
||||
The
|
||||
.Fn exit
|
||||
function conforms to
|
||||
.St -p1003.1-2024 .
|
||||
.St -isoC-99 .
|
||||
.Sh HISTORY
|
||||
An
|
||||
.Fn exit
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: ERR_asprintf_error_data.3,v 1.2 2017/02/21 07:15:21 jmc Exp $
|
||||
.\" $OpenBSD: ERR_asprintf_error_data.3,v 1.3 2024/08/29 20:23:21 tb Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2017 Bob Beck <beck@openbsd.org>
|
||||
.\"
|
||||
@ -13,7 +13,7 @@
|
||||
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
.Dd $Mdocdate: February 21 2017 $
|
||||
.Dd $Mdocdate: August 29 2024 $
|
||||
.Dt ERR_ASPRINTF_ERROR_DATA 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -41,9 +41,9 @@ fails, the string "malloc failed" is associated instead.
|
||||
.Pp
|
||||
.Nm
|
||||
is intended to be used instead of the OpenSSL functions
|
||||
.Xr ERR_add_error_data 3
|
||||
.Fn ERR_add_error_data
|
||||
and
|
||||
.Xr ERR_add_error_vdata 3 .
|
||||
.Fn ERR_add_error_vdata .
|
||||
.Sh SEE ALSO
|
||||
.Xr ERR 3 ,
|
||||
.Xr ERR_put_error 3 ,
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: ERR_put_error.3,v 1.10 2022/03/31 17:27:16 naddy Exp $
|
||||
.\" $OpenBSD: ERR_put_error.3,v 1.11 2024/08/29 20:23:21 tb Exp $
|
||||
.\" OpenSSL b97fdb57 Nov 11 09:33:09 2016 +0100
|
||||
.\"
|
||||
.\" This file was written by Ulf Moeller <ulf@openssl.org>.
|
||||
@ -48,13 +48,11 @@
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: March 31 2022 $
|
||||
.Dd $Mdocdate: August 29 2024 $
|
||||
.Dt ERR_PUT_ERROR 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm ERR_put_error ,
|
||||
.Nm ERR_add_error_data ,
|
||||
.Nm ERR_add_error_vdata
|
||||
.Nm ERR_put_error
|
||||
.Nd record an OpenSSL error
|
||||
.Sh SYNOPSIS
|
||||
.In openssl/err.h
|
||||
@ -66,16 +64,6 @@
|
||||
.Fa "const char *file"
|
||||
.Fa "int line"
|
||||
.Fc
|
||||
.Ft void
|
||||
.Fo ERR_add_error_data
|
||||
.Fa "int num"
|
||||
.Fa ...
|
||||
.Fc
|
||||
.Ft void
|
||||
.Fo ERR_add_error_vdata
|
||||
.Fa "int num"
|
||||
.Fa "va_list arg"
|
||||
.Fc
|
||||
.Sh DESCRIPTION
|
||||
.Fn ERR_put_error
|
||||
adds an error code to the thread's error queue.
|
||||
@ -91,20 +79,6 @@ of
|
||||
.Fa file .
|
||||
This function is usually called by a macro.
|
||||
.Pp
|
||||
.Fn ERR_add_error_data
|
||||
associates the concatenation of its
|
||||
.Fa num
|
||||
string arguments with the error code added last.
|
||||
.Fn ERR_add_error_vdata
|
||||
is similar except the argument is a
|
||||
.Vt va_list .
|
||||
Use of
|
||||
.Fn ERR_add_error_data
|
||||
and
|
||||
.Fn ERR_add_error_vdata
|
||||
is deprecated inside of LibreSSL in favour of
|
||||
.Xr ERR_asprintf_error_data 3 .
|
||||
.Pp
|
||||
.Xr ERR_load_strings 3
|
||||
can be used to register error strings so that the application can
|
||||
generate human-readable error messages for the error code.
|
||||
@ -147,12 +121,5 @@ macro.
|
||||
.Xr ERR_load_strings 3
|
||||
.Sh HISTORY
|
||||
.Fn ERR_put_error
|
||||
first appeared in SSLeay 0.4.4.
|
||||
.Fn ERR_add_error_data
|
||||
first appeared in SSLeay 0.9.0.
|
||||
Both functions have been available since
|
||||
first appeared in SSLeay 0.4.4 and has been available since
|
||||
.Ox 2.4 .
|
||||
.Pp
|
||||
.Fn ERR_add_error_vdata
|
||||
first appeared in OpenSSL 1.0.1 and has been available since
|
||||
.Ox 5.3 .
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: EVP_DigestInit.3,v 1.34 2024/07/21 08:36:43 tb Exp $
|
||||
.\" $OpenBSD: EVP_DigestInit.3,v 1.35 2024/08/30 07:03:19 tb Exp $
|
||||
.\" full merge up to: OpenSSL 7f572e95 Dec 2 13:57:04 2015 +0000
|
||||
.\" selective merge up to: OpenSSL 24a535ea Sep 22 13:14:20 2020 +0100
|
||||
.\"
|
||||
@ -70,7 +70,7 @@
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: July 21 2024 $
|
||||
.Dd $Mdocdate: August 30 2024 $
|
||||
.Dt EVP_DIGESTINIT 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -536,7 +536,6 @@ main(int argc, char *argv[])
|
||||
.Xr EVP_SignInit 3 ,
|
||||
.Xr EVP_sm3 3 ,
|
||||
.Xr EVP_VerifyInit 3 ,
|
||||
.Xr EVP_whirlpool 3 ,
|
||||
.Xr HMAC 3 ,
|
||||
.Xr OCSP_basic_sign 3 ,
|
||||
.Xr OCSP_request_sign 3 ,
|
||||
|
@ -1,83 +0,0 @@
|
||||
.\" $OpenBSD: EVP_whirlpool.3,v 1.1 2019/08/25 17:08:20 schwarze Exp $
|
||||
.\" full merge up to: OpenSSL bbda8ce9 Oct 31 15:43:01 2017 +0800
|
||||
.\"
|
||||
.\" This file was written by Ronald Tse <ronald.tse@ribose.com>.
|
||||
.\" Copyright (c) 2017 The OpenSSL Project. All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\"
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\"
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in
|
||||
.\" the documentation and/or other materials provided with the
|
||||
.\" distribution.
|
||||
.\"
|
||||
.\" 3. All advertising materials mentioning features or use of this
|
||||
.\" software must display the following acknowledgment:
|
||||
.\" "This product includes software developed by the OpenSSL Project
|
||||
.\" for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
|
||||
.\"
|
||||
.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
.\" endorse or promote products derived from this software without
|
||||
.\" prior written permission. For written permission, please contact
|
||||
.\" openssl-core@openssl.org.
|
||||
.\"
|
||||
.\" 5. Products derived from this software may not be called "OpenSSL"
|
||||
.\" nor may "OpenSSL" appear in their names without prior written
|
||||
.\" permission of the OpenSSL Project.
|
||||
.\"
|
||||
.\" 6. Redistributions of any form whatsoever must retain the following
|
||||
.\" acknowledgment:
|
||||
.\" "This product includes software developed by the OpenSSL Project
|
||||
.\" for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: August 25 2019 $
|
||||
.Dt EVP_WHIRLPOOL 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm EVP_whirlpool
|
||||
.Nd WHIRLPOOL hash function for EVP
|
||||
.Sh SYNOPSIS
|
||||
.In openssl/evp.h
|
||||
.Ft const EVP_MD *
|
||||
.Fn EVP_whirlpool void
|
||||
.Sh DESCRIPTION
|
||||
WHIRLPOOL is a cryptographic hash function
|
||||
producing a message digest of 512 bits.
|
||||
.Sh RETURN VALUES
|
||||
.Fn EVP_whirlpool
|
||||
returns a pointer to a static
|
||||
.Vt EVP_MD
|
||||
object implementing the WHIRLPOOL hash function.
|
||||
.Sh SEE ALSO
|
||||
.Xr evp 3 ,
|
||||
.Xr EVP_DigestInit 3
|
||||
.Sh STANDARDS
|
||||
ISO/IEC 10118-3:2004
|
||||
.Sh HISTORY
|
||||
.Fn EVP_whirlpool
|
||||
first appeared in OpenSSL 1.0.0 and has been available since
|
||||
.Ox 4.9 .
|
||||
.Sh AUTHORS
|
||||
.An -nosplit
|
||||
The WHIRLPOOL algorithm was designed by
|
||||
.An Vincent Rijmen
|
||||
and
|
||||
.An Paulo S. L. M. Barreto .
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: HMAC.3,v 1.22 2024/07/21 08:36:43 tb Exp $
|
||||
.\" $OpenBSD: HMAC.3,v 1.23 2024/08/29 20:21:53 tb Exp $
|
||||
.\" full merge up to: OpenSSL crypto/hmac a528d4f0 Oct 27 13:40:11 2015 -0400
|
||||
.\" selective merge up to: OpenSSL man3/HMAC b3696a55 Sep 2 09:35:50 2017 -0400
|
||||
.\"
|
||||
@ -52,7 +52,7 @@
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: July 21 2024 $
|
||||
.Dd $Mdocdate: August 29 2024 $
|
||||
.Dt HMAC 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -61,7 +61,6 @@
|
||||
.Nm HMAC_CTX_reset ,
|
||||
.Nm HMAC_CTX_free ,
|
||||
.Nm HMAC_Init_ex ,
|
||||
.Nm HMAC_Init ,
|
||||
.Nm HMAC_Update ,
|
||||
.Nm HMAC_Final ,
|
||||
.Nm HMAC_CTX_copy ,
|
||||
@ -100,13 +99,6 @@
|
||||
.Fa "ENGINE *engine"
|
||||
.Fc
|
||||
.Ft int
|
||||
.Fo HMAC_Init
|
||||
.Fa "HMAC_CTX *ctx"
|
||||
.Fa "const void *key"
|
||||
.Fa "int key_len"
|
||||
.Fa "const EVP_MD *md"
|
||||
.Fc
|
||||
.Ft int
|
||||
.Fo HMAC_Update
|
||||
.Fa "HMAC_CTX *ctx"
|
||||
.Fa "const unsigned char *data"
|
||||
@ -229,12 +221,6 @@ argument is always ignored and passing
|
||||
.Dv NULL
|
||||
is recommended.
|
||||
.Pp
|
||||
.Fn HMAC_Init
|
||||
is a deprecated wrapper around
|
||||
.Fn HMAC_Init_ex
|
||||
which performs no longer useful extra initialization in
|
||||
some circumstances.
|
||||
.Pp
|
||||
.Fn HMAC_Update
|
||||
can be called repeatedly with chunks of the message to be authenticated
|
||||
.Pq Fa len No bytes at Fa data .
|
||||
@ -302,7 +288,6 @@ or 0 on error.
|
||||
RFC 2104
|
||||
.Sh HISTORY
|
||||
.Fn HMAC ,
|
||||
.Fn HMAC_Init ,
|
||||
.Fn HMAC_Update ,
|
||||
.Fn HMAC_Final ,
|
||||
and
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: Makefile,v 1.291 2024/08/24 09:15:36 tb Exp $
|
||||
# $OpenBSD: Makefile,v 1.292 2024/08/29 20:25:13 tb Exp $
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
@ -207,7 +207,6 @@ MAN= \
|
||||
EVP_sha3_224.3 \
|
||||
EVP_sm3.3 \
|
||||
EVP_sm4_cbc.3 \
|
||||
EVP_whirlpool.3 \
|
||||
EXTENDED_KEY_USAGE_new.3 \
|
||||
GENERAL_NAME_new.3 \
|
||||
HMAC.3 \
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: X509_STORE_CTX_set_flags.3,v 1.7 2024/01/12 19:28:02 tb Exp $
|
||||
.\" $OpenBSD: X509_STORE_CTX_set_flags.3,v 1.8 2024/08/29 20:21:10 tb Exp $
|
||||
.\" full merge up to: OpenSSL aae41f8c Jun 25 09:47:15 2015 +0100
|
||||
.\" selective merge up to: OpenSSL 24a535ea Sep 22 13:14:20 2020 +0100
|
||||
.\"
|
||||
@ -67,7 +67,7 @@
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: January 12 2024 $
|
||||
.Dd $Mdocdate: August 29 2024 $
|
||||
.Dt X509_STORE_CTX_SET_FLAGS 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -324,13 +324,3 @@ It is therefore recommended to use
|
||||
and
|
||||
.Xr X509_VERIFY_PARAM_set_purpose 3
|
||||
instead.
|
||||
.Pp
|
||||
The confusingly named
|
||||
.Dv X509_TRUST_DEFAULT
|
||||
is less than
|
||||
.Dv X509_TRUST_MIN
|
||||
and different implementations treat it as valid or invalid
|
||||
when used as an associated trust or as a
|
||||
.Fa trust
|
||||
argument for
|
||||
.Fn X509_STORE_CTX_set_trust .
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: evp.3,v 1.31 2024/08/24 09:15:36 tb Exp $
|
||||
.\" $OpenBSD: evp.3,v 1.32 2024/08/30 07:03:19 tb Exp $
|
||||
.\" full merge up to: OpenSSL man7/evp 24a535ea Sep 22 13:14:20 2020 +0100
|
||||
.\"
|
||||
.\" This file was written by Ulf Moeller <ulf@openssl.org>,
|
||||
@ -51,7 +51,7 @@
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: August 24 2024 $
|
||||
.Dd $Mdocdate: August 30 2024 $
|
||||
.Dt EVP 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -219,7 +219,6 @@ family of functions provides base64 encoding and decoding.
|
||||
.Xr EVP_sm3 3 ,
|
||||
.Xr EVP_sm4_cbc 3 ,
|
||||
.Xr EVP_VerifyInit 3 ,
|
||||
.Xr EVP_whirlpool 3 ,
|
||||
.Xr HMAC 3 ,
|
||||
.Xr OCSP_basic_sign 3 ,
|
||||
.Xr OCSP_request_sign 3 ,
|
||||
|
@ -1,10 +1,9 @@
|
||||
/* $OpenBSD: freenull.c.head,v 1.9 2024/02/29 20:00:53 tb Exp $ */
|
||||
/* $OpenBSD: freenull.c.head,v 1.10 2024/08/30 05:00:38 tb Exp $ */
|
||||
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/cmac.h>
|
||||
#include <openssl/cms.h>
|
||||
#include <openssl/comp.h>
|
||||
#include <openssl/conf_api.h>
|
||||
#include <openssl/ct.h>
|
||||
#include <openssl/engine.h>
|
||||
#ifndef OPENSSL_NO_GOST
|
||||
|
@ -1,8 +1,6 @@
|
||||
/* $OpenBSD: freenull.c.tail,v 1.3 2024/03/30 09:41:25 tb Exp $ */
|
||||
/* $OpenBSD: freenull.c.tail,v 1.4 2024/08/30 05:00:38 tb Exp $ */
|
||||
|
||||
BIO_free_all(NULL);
|
||||
NCONF_free_data(NULL);
|
||||
_CONF_free_data(NULL);
|
||||
|
||||
sk_ASN1_OBJECT_pop_free(NULL, NULL);
|
||||
sk_CONF_VALUE_pop_free(NULL, NULL);
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: etherip.4,v 1.6 2018/01/12 04:36:44 deraadt Exp $
|
||||
.\" $OpenBSD: etherip.4,v 1.9 2024/08/30 09:39:07 dlg Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2015 YASUOKA Masahiko <yasuoka@openbsd.org>
|
||||
.\"
|
||||
@ -16,7 +16,7 @@
|
||||
.\"
|
||||
.\" The following requests are required for all man pages.
|
||||
.\"
|
||||
.Dd $Mdocdate: January 12 2018 $
|
||||
.Dd $Mdocdate: August 30 2024 $
|
||||
.Dt ETHERIP 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -27,8 +27,9 @@
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
interface is a pseudo-device for tunnelling Ethernet frames across IP[46]
|
||||
networks using RFC 3378 EtherIP encapsulation.
|
||||
driver provides point-to-point tunnel interfaces for carrying
|
||||
Ethernet frames across IPv4 and IPv6 networks using RFC 3378 EtherIP
|
||||
encapsulation.
|
||||
.Pp
|
||||
An
|
||||
.Nm
|
||||
@ -45,11 +46,6 @@ This can be done using
|
||||
command (which uses the
|
||||
.Dv SIOCSLIFPHYADDR
|
||||
ioctl).
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
interface must be made a member of a
|
||||
.Xr bridge 4 .
|
||||
The
|
||||
.Xr sysctl 2
|
||||
variable
|
||||
@ -57,115 +53,117 @@ variable
|
||||
must be set to 1, unless
|
||||
.Xr ipsec 4
|
||||
is being used to protect the traffic.
|
||||
Ethernet frames are then encapsulated and sent across the network
|
||||
to another
|
||||
.Xr bridge 4 ,
|
||||
which decapsulates the datagram and processes the resulting Ethernet
|
||||
frame as if it had originated on a normal Ethernet interface.
|
||||
This effectively allows a layer 2 network to be extended from one point to
|
||||
another, possibly through the Internet.
|
||||
This mechanism may be used in
|
||||
conjunction with IPsec by specifying the appropriate IPsec flows
|
||||
between the two bridges.
|
||||
To only protect the bridge traffic between
|
||||
the two bridges, the transport protocol 97 (etherip) selector may be
|
||||
used in
|
||||
.Xr ipsec.conf 5 .
|
||||
Otherwise, the Ethernet frames will be sent in the clear between the
|
||||
two bridges.
|
||||
.Sh EXAMPLES
|
||||
Given two physically separate Ethernet networks, a bridge can
|
||||
be used as follows to make them appear as the same local area network.
|
||||
If bridge1 on network1 has the external IP address 1.2.3.4 on em0,
|
||||
bridge2 on network2 has the external IP address 4.3.2.1 on em0, and
|
||||
both bridges have em1 on their internal network (network1 and network2,
|
||||
respectively), the following configuration can be used to bridge
|
||||
network1 and network2.
|
||||
.Pp
|
||||
First create the bridge interface,
|
||||
adding the encapsulation interface and internal Ethernet interface
|
||||
to the bridge interface:
|
||||
.Nm
|
||||
interfaces can configured as part of an Ethernet bridges such as
|
||||
.Xr veb 4 ,
|
||||
.Xr tpmr 4 ,
|
||||
and
|
||||
.Xr bridge 4
|
||||
to extend the connectivity of Ethernet networks across IP networks,
|
||||
possibly across the Internet.
|
||||
.Pp
|
||||
The EtherIP protocol does not provide any integrated security
|
||||
features.
|
||||
EtherIP should only be deployed on trusted private networks, or
|
||||
protected with IPsec to add authentication and encryption for
|
||||
confidentiality.
|
||||
IPsec is especially recommended when transporting EtherIP over the
|
||||
public Internet.
|
||||
EtherIP encapsulated packets may be protected with IPsec by specifying
|
||||
the appropriate IPsec flows between the two endpoints.
|
||||
To only protect the encapsulated EtherIP traffic between the tunnel
|
||||
enpoints the IP transport protocol 97 (etherip) selector may be used
|
||||
in
|
||||
.Xr ipsec.conf 5
|
||||
or
|
||||
.Xr iked.conf 5 .
|
||||
.Sh EXAMPLES
|
||||
Given two physically separate Ethernet networks,
|
||||
.Nm
|
||||
can be used as follows to make them appear as the same local area
|
||||
network.
|
||||
If host gw1 has the external IP address 192.0.2.10 and is connected
|
||||
to network1 on em1, and host gw2 has the external IP address
|
||||
198.51.100.14 and is connected to network2 on ix1, the following
|
||||
configuration can be used to bridge network1 and network2.
|
||||
.Pp
|
||||
First create the a bridge using a
|
||||
.Xr veb 4
|
||||
interface,
|
||||
adding the
|
||||
.Nm
|
||||
interface and internal Ethernet interface to the bridge.
|
||||
.Pp
|
||||
On gw1:
|
||||
.Bd -literal -offset indent
|
||||
# ifconfig bridge0 add etherip0 add em1
|
||||
gw1# ifconfig etherip0 create tunnel 192.0.2.10 198.51.100.14
|
||||
gw1# ifconfig veb0 create add etherip0 add em1
|
||||
.Ed
|
||||
.Pp
|
||||
Create and configure the etherip0 interface:
|
||||
On gw2:
|
||||
.Bd -literal -offset indent
|
||||
(on bridge 1) # ifconfig etherip0 tunnel 1.2.3.4 4.3.2.1
|
||||
(on bridge 2) # ifconfig etherip0 tunnel 4.3.2.1 1.2.3.4
|
||||
gw2# ifconfig etherip0 create tunnel 198.51.100.14 192.0.2.10
|
||||
gw2# ifconfig veb0 create add etherip0 add ix1
|
||||
.Ed
|
||||
.Pp
|
||||
Create Security Associations (SAs) between the external IP address of each
|
||||
bridge and matching ingress flows by using the following
|
||||
.Xr ipsec.conf 5
|
||||
file on bridge1:
|
||||
file on gw1:
|
||||
.Bd -literal -offset indent
|
||||
esp from 1.2.3.4 to 4.3.2.1 spi 0x4242:0x4243 \e
|
||||
esp from 198.51.100.14 to 192.0.2.10 spi 0x4242:0x4243 \e
|
||||
authkey file "auth1:auth2" enckey file "enc1:enc2"
|
||||
flow esp proto etherip from 1.2.3.4 to 4.3.2.1
|
||||
flow esp proto etherip from 198.51.100.14 to 192.0.2.10
|
||||
.Ed
|
||||
.Pp
|
||||
Now load these rules into the kernel by issuing the
|
||||
.Xr ipsecctl 8
|
||||
command:
|
||||
.Bd -literal -offset indent
|
||||
# ipsecctl -f ipsec.conf
|
||||
gw1# ipsecctl -f ipsec.conf
|
||||
.Ed
|
||||
.Pp
|
||||
Appropriate
|
||||
.Xr ipsec.conf 5
|
||||
for bridge2:
|
||||
for gw2:
|
||||
.Bd -literal -offset indent
|
||||
esp from 4.3.2.1 to 1.2.3.4 spi 0x4243:0x4242 \e
|
||||
esp from 198.51.100.14 to 192.0.2.10 spi 0x4243:0x4242 \e
|
||||
authkey file "auth2:auth1" enckey file "enc2:enc1"
|
||||
flow esp proto etherip from 4.3.2.1 to 1.2.3.4
|
||||
flow esp proto etherip from 198.51.100.14 to 192.0.2.10
|
||||
.Ed
|
||||
.Pp
|
||||
And load them:
|
||||
.Bd -literal -offset indent
|
||||
# ipsecctl -f ipsec.conf
|
||||
gw2# ipsecctl -f ipsec.conf
|
||||
.Ed
|
||||
.Pp
|
||||
To use dynamic (as opposed to static) keying,
|
||||
use this
|
||||
.Xr ipsec.conf 5
|
||||
on bridge1:
|
||||
Finally, bring all the interfaces up (if not already up).
|
||||
.Pp
|
||||
On gw1:
|
||||
.Bd -literal -offset indent
|
||||
ike esp proto etherip from 1.2.3.4 to 4.3.2.1
|
||||
gw1# ifconfig em1 up
|
||||
gw1# ifconfig etherip0 up
|
||||
gw1# ifconfig veb0 up
|
||||
.Ed
|
||||
.Pp
|
||||
And on bridge2:
|
||||
On gw2:
|
||||
.Bd -literal -offset indent
|
||||
ike esp proto etherip from 4.3.2.1 to 1.2.3.4
|
||||
gw1# ifconfig ix1 up
|
||||
gw1# ifconfig etherip0 up
|
||||
gw1# ifconfig veb0 up
|
||||
.Ed
|
||||
.Pp
|
||||
Bring up the internal interface (if not already up) and encapsulation
|
||||
interface:
|
||||
.Bd -literal -offset indent
|
||||
# ifconfig em1 up
|
||||
# ifconfig etherip0 up
|
||||
.Ed
|
||||
.Pp
|
||||
Finally, bring the bridge interface up and allow it to start processing
|
||||
frames:
|
||||
.Pp
|
||||
.Dl # ifconfig bridge0 up
|
||||
.Pp
|
||||
The internal interface on each bridge need not have an IP
|
||||
address: the bridge can function without it.
|
||||
.Pp
|
||||
Note: It is possible to put the above commands in the
|
||||
.Xr hostname.if 5
|
||||
files, using the
|
||||
.Sq !\&
|
||||
operator.
|
||||
.Sh SEE ALSO
|
||||
.Xr sysctl 2 ,
|
||||
.Xr bridge 4 ,
|
||||
.Xr inet 4 ,
|
||||
.Xr inet6 4 ,
|
||||
.Xr ipsec 4 ,
|
||||
.Xr tpmr 4 ,
|
||||
.Xr veb 4 ,
|
||||
.Xr hostname.if 5 ,
|
||||
.Xr iked.conf 5 ,
|
||||
.Xr ipsec.conf 5 ,
|
||||
.Xr ifconfig 8 ,
|
||||
.Xr netstart 8
|
||||
.Sh STANDARDS
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: sec.4,v 1.2 2023/08/07 16:29:36 jmc Exp $
|
||||
.\" $OpenBSD: sec.4,v 1.3 2024/08/30 13:09:10 dlg Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2023 David Gwynne <dlg@openbsd.org>
|
||||
.\"
|
||||
@ -14,7 +14,7 @@
|
||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
.\"
|
||||
.Dd $Mdocdate: August 7 2023 $
|
||||
.Dd $Mdocdate: August 30 2024 $
|
||||
.Dt SEC 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -46,6 +46,8 @@ and
|
||||
.Xr isakmpd 8
|
||||
(the latter via
|
||||
.Xr ipsecctl 8 ) .
|
||||
.\" These IPsec IKE daemons negotiate ESP tunnel mode between 0.0.0.0/0
|
||||
.\" and 0.0.0.0/0.
|
||||
.Pp
|
||||
.Nm
|
||||
interfaces can be created at runtime using the
|
||||
@ -57,6 +59,73 @@ configuration file for
|
||||
The interface itself can be configured with
|
||||
.Xr ifconfig 8 ;
|
||||
see its manual page for more information.
|
||||
.Sh EXAMPLES
|
||||
.Nm
|
||||
can be used to provide secure and confidential IP connectivity
|
||||
between sites over the public internet.
|
||||
For example, a cloud provider may provide connectivity between
|
||||
networks they host for a customer, and that customers own
|
||||
.Dq on premises
|
||||
networks using IPsec tunnels.
|
||||
.Ox
|
||||
can be set up on the customer side given the following parameters:
|
||||
.Pp
|
||||
.Bl -tag -width Customer-Gateway -offset indent -compact
|
||||
.It Pre-Shared Key
|
||||
7kA7evdkd50Q5YdCCF9t8eftgEgL4vk2
|
||||
.El
|
||||
.Pp
|
||||
Outside IP Addresses:
|
||||
.Bl -tag -width Customer-Gateway -offset indent -compact
|
||||
.It Customer Gateway
|
||||
192.0.2.8
|
||||
.It Provider Gateway
|
||||
198.51.100.14
|
||||
.El
|
||||
.Pp
|
||||
Inside IP Addresses:
|
||||
.Bl -tag -width Customer-Gateway -offset indent -compact
|
||||
.It Customer Gateway
|
||||
169.254.229.42/30
|
||||
.It Provider Gateway
|
||||
169.254.229.41/30
|
||||
.El
|
||||
.Pp
|
||||
A
|
||||
.Nm
|
||||
interface can be configured on the customer gateway:
|
||||
.Bd -literal -offset indent
|
||||
# ifconfig sec0 create
|
||||
# ifconfig sec0 tunnel 169.254.229.42/30 169.254.229.41
|
||||
# ifconfig sec0 up
|
||||
.Ed
|
||||
.Pp
|
||||
.Xr iked 8
|
||||
can be used for IKEv2 negotiation of the IPsec tunnel with the following
|
||||
.Xr iked.conf 5
|
||||
configuration:
|
||||
.Bd -literal -offset indent
|
||||
ikev2 "s2s" active \\
|
||||
from any to any \\
|
||||
local 192.0.2.8 peer 198.51.100.14 \\
|
||||
psk "7kA7evdkd50Q5YdCCF9t8eftgEgL4vk2" \\
|
||||
iface sec0
|
||||
.Ed
|
||||
.Pp
|
||||
Once
|
||||
.Xr iked 8
|
||||
is running with this configuration, communication between the
|
||||
customer and provider gateways is enabled.
|
||||
.Pp
|
||||
Routes to networks hosted by the provider can be added using the
|
||||
providers
|
||||
.Dq inside IP
|
||||
address as the gateway address, or negotiated using a dynamic routing
|
||||
protocol.
|
||||
Multiple
|
||||
.Nm
|
||||
interfaces may be configured to talk to separate provider gateways,
|
||||
providing redundancy or multiple paths between sites.
|
||||
.Sh SEE ALSO
|
||||
.Xr ipsec 4 ,
|
||||
.Xr netintro 4 ,
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: pmap.c,v 1.171 2024/08/08 15:57:22 dv Exp $ */
|
||||
/* $OpenBSD: pmap.c,v 1.172 2024/08/29 20:13:42 dv Exp $ */
|
||||
/* $NetBSD: pmap.c,v 1.3 2003/05/08 18:13:13 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
@ -334,9 +334,11 @@ static int pmap_is_active(struct pmap *, struct cpu_info *);
|
||||
paddr_t pmap_map_ptes(struct pmap *);
|
||||
struct pv_entry *pmap_remove_pv(struct vm_page *, struct pmap *, vaddr_t);
|
||||
void pmap_do_remove(struct pmap *, vaddr_t, vaddr_t, int);
|
||||
#if NVMM > 0
|
||||
void pmap_remove_ept(struct pmap *, vaddr_t, vaddr_t);
|
||||
void pmap_do_remove_ept(struct pmap *, vaddr_t);
|
||||
int pmap_enter_ept(struct pmap *, vaddr_t, paddr_t, vm_prot_t);
|
||||
#endif /* NVMM > 0 */
|
||||
int pmap_remove_pte(struct pmap *, struct vm_page *, pt_entry_t *,
|
||||
vaddr_t, int, struct pv_entry **);
|
||||
void pmap_remove_ptes(struct pmap *, struct vm_page *, vaddr_t,
|
||||
@ -1783,9 +1785,11 @@ pmap_remove_pte(struct pmap *pmap, struct vm_page *ptp, pt_entry_t *pte,
|
||||
void
|
||||
pmap_remove(struct pmap *pmap, vaddr_t sva, vaddr_t eva)
|
||||
{
|
||||
#if NVMM > 0
|
||||
if (pmap->pm_type == PMAP_TYPE_EPT)
|
||||
pmap_remove_ept(pmap, sva, eva);
|
||||
else
|
||||
#endif /* NVMM > 0 */
|
||||
pmap_do_remove(pmap, sva, eva, PMAP_REMOVE_ALL);
|
||||
}
|
||||
|
||||
@ -2415,13 +2419,43 @@ pmap_enter_special(vaddr_t va, paddr_t pa, vm_prot_t prot)
|
||||
DPRINTF("%s: setting PTE[%lld] = 0x%llx\n", __func__, l1idx, pd[l1idx]);
|
||||
}
|
||||
|
||||
#if NVMM > 0
|
||||
/*
|
||||
* pmap_convert
|
||||
*
|
||||
* Converts 'pmap' to the new 'mode'.
|
||||
*
|
||||
* Parameters:
|
||||
* pmap: the pmap to convert
|
||||
* mode: the new mode (see pmap.h, PMAP_TYPE_xxx)
|
||||
*/
|
||||
void
|
||||
pmap_convert(struct pmap *pmap, int mode)
|
||||
{
|
||||
pt_entry_t *pte;
|
||||
|
||||
mtx_enter(&pmap->pm_mtx);
|
||||
pmap->pm_type = mode;
|
||||
|
||||
if (mode == PMAP_TYPE_EPT) {
|
||||
/* Clear PML4 */
|
||||
pte = (pt_entry_t *)pmap->pm_pdir;
|
||||
memset(pte, 0, PAGE_SIZE);
|
||||
|
||||
/* Give back the meltdown pdir */
|
||||
if (pmap->pm_pdir_intel != NULL) {
|
||||
pool_put(&pmap_pdp_pool, pmap->pm_pdir_intel);
|
||||
pmap->pm_pdir_intel = NULL;
|
||||
}
|
||||
}
|
||||
mtx_leave(&pmap->pm_mtx);
|
||||
}
|
||||
|
||||
void
|
||||
pmap_remove_ept(struct pmap *pmap, vaddr_t sgpa, vaddr_t egpa)
|
||||
{
|
||||
vaddr_t v;
|
||||
#if NVMM > 0
|
||||
struct vmx_invept_descriptor vid;
|
||||
#endif /* NVMM > 0 */
|
||||
|
||||
mtx_enter(&pmap->pm_mtx);
|
||||
|
||||
@ -2430,7 +2464,6 @@ pmap_remove_ept(struct pmap *pmap, vaddr_t sgpa, vaddr_t egpa)
|
||||
for (v = sgpa; v < egpa + PAGE_SIZE; v += PAGE_SIZE)
|
||||
pmap_do_remove_ept(pmap, v);
|
||||
|
||||
#if NVMM > 0
|
||||
if (pmap->eptp != 0) {
|
||||
memset(&vid, 0, sizeof(vid));
|
||||
vid.vid_eptp = pmap->eptp;
|
||||
@ -2438,7 +2471,6 @@ pmap_remove_ept(struct pmap *pmap, vaddr_t sgpa, vaddr_t egpa)
|
||||
vid.vid_eptp);
|
||||
invept(IA32_VMX_INVEPT_SINGLE_CTX, &vid);
|
||||
}
|
||||
#endif /* NVMM > 0 */
|
||||
|
||||
mtx_leave(&pmap->pm_mtx);
|
||||
}
|
||||
@ -2702,6 +2734,7 @@ unlock:
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif /* NVMM > 0 */
|
||||
|
||||
/*
|
||||
* pmap_enter: enter a mapping into a pmap
|
||||
@ -2723,8 +2756,10 @@ pmap_enter(struct pmap *pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags)
|
||||
int error, shootself;
|
||||
paddr_t scr3;
|
||||
|
||||
#if NVMM > 0
|
||||
if (pmap->pm_type == PMAP_TYPE_EPT)
|
||||
return pmap_enter_ept(pmap, va, pa, prot);
|
||||
#endif /* NVMM > 0 */
|
||||
|
||||
KASSERT(!(wc && nocache));
|
||||
pa &= PMAP_PA_MASK;
|
||||
@ -3147,37 +3182,6 @@ pmap_steal_memory(vsize_t size, vaddr_t *start, vaddr_t *end)
|
||||
return (va);
|
||||
}
|
||||
|
||||
/*
|
||||
* pmap_convert
|
||||
*
|
||||
* Converts 'pmap' to the new 'mode'.
|
||||
*
|
||||
* Parameters:
|
||||
* pmap: the pmap to convert
|
||||
* mode: the new mode (see pmap.h, PMAP_TYPE_xxx)
|
||||
*/
|
||||
void
|
||||
pmap_convert(struct pmap *pmap, int mode)
|
||||
{
|
||||
pt_entry_t *pte;
|
||||
|
||||
mtx_enter(&pmap->pm_mtx);
|
||||
pmap->pm_type = mode;
|
||||
|
||||
if (mode == PMAP_TYPE_EPT) {
|
||||
/* Clear PML4 */
|
||||
pte = (pt_entry_t *)pmap->pm_pdir;
|
||||
memset(pte, 0, PAGE_SIZE);
|
||||
|
||||
/* Give back the meltdown pdir */
|
||||
if (pmap->pm_pdir_intel != NULL) {
|
||||
pool_put(&pmap_pdp_pool, pmap->pm_pdir_intel);
|
||||
pmap->pm_pdir_intel = NULL;
|
||||
}
|
||||
}
|
||||
mtx_leave(&pmap->pm_mtx);
|
||||
}
|
||||
|
||||
#ifdef MULTIPROCESSOR
|
||||
/*
|
||||
* Locking for tlb shootdown.
|
||||
|
@ -303,6 +303,7 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(struct amdgpu_device *adev,
|
||||
struct kgd_mem *mem, void *drm_priv);
|
||||
int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
|
||||
struct amdgpu_device *adev, struct kgd_mem *mem, void *drm_priv);
|
||||
int amdgpu_amdkfd_gpuvm_dmaunmap_mem(struct kgd_mem *mem, void *drm_priv);
|
||||
int amdgpu_amdkfd_gpuvm_sync_memory(
|
||||
struct amdgpu_device *adev, struct kgd_mem *mem, bool intr);
|
||||
int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_mem *mem,
|
||||
|
@ -733,7 +733,7 @@ kfd_mem_dmaunmap_sg_bo(struct kgd_mem *mem,
|
||||
enum dma_data_direction dir;
|
||||
|
||||
if (unlikely(!ttm->sg)) {
|
||||
pr_err("SG Table of BO is UNEXPECTEDLY NULL");
|
||||
pr_debug("SG Table of BO is NULL");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1202,8 +1202,6 @@ static void unmap_bo_from_gpuvm(struct kgd_mem *mem,
|
||||
amdgpu_vm_clear_freed(adev, vm, &bo_va->last_pt_update);
|
||||
|
||||
amdgpu_sync_fence(sync, bo_va->last_pt_update);
|
||||
|
||||
kfd_mem_dmaunmap_attachment(mem, entry);
|
||||
}
|
||||
|
||||
static int update_gpuvm_pte(struct kgd_mem *mem,
|
||||
@ -1258,6 +1256,7 @@ static int map_bo_to_gpuvm(struct kgd_mem *mem,
|
||||
|
||||
update_gpuvm_pte_failed:
|
||||
unmap_bo_from_gpuvm(mem, entry, sync);
|
||||
kfd_mem_dmaunmap_attachment(mem, entry);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1862,8 +1861,10 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
|
||||
mem->va + bo_size * (1 + mem->aql_queue));
|
||||
|
||||
/* Remove from VM internal data structures */
|
||||
list_for_each_entry_safe(entry, tmp, &mem->attachments, list)
|
||||
list_for_each_entry_safe(entry, tmp, &mem->attachments, list) {
|
||||
kfd_mem_dmaunmap_attachment(mem, entry);
|
||||
kfd_mem_detach(entry);
|
||||
}
|
||||
|
||||
ret = unreserve_bo_and_vms(&ctx, false, false);
|
||||
|
||||
@ -2037,6 +2038,37 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int amdgpu_amdkfd_gpuvm_dmaunmap_mem(struct kgd_mem *mem, void *drm_priv)
|
||||
{
|
||||
struct kfd_mem_attachment *entry;
|
||||
struct amdgpu_vm *vm;
|
||||
int ret;
|
||||
|
||||
vm = drm_priv_to_vm(drm_priv);
|
||||
|
||||
mutex_lock(&mem->lock);
|
||||
|
||||
ret = amdgpu_bo_reserve(mem->bo, true);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
list_for_each_entry(entry, &mem->attachments, list) {
|
||||
if (entry->bo_va->base.vm != vm)
|
||||
continue;
|
||||
if (entry->bo_va->base.bo->tbo.ttm &&
|
||||
!entry->bo_va->base.bo->tbo.ttm->sg)
|
||||
continue;
|
||||
|
||||
kfd_mem_dmaunmap_attachment(mem, entry);
|
||||
}
|
||||
|
||||
amdgpu_bo_unreserve(mem->bo);
|
||||
out:
|
||||
mutex_unlock(&mem->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
|
||||
struct amdgpu_device *adev, struct kgd_mem *mem, void *drm_priv)
|
||||
{
|
||||
|
@ -1059,6 +1059,9 @@ static int amdgpu_cs_patch_ibs(struct amdgpu_cs_parser *p,
|
||||
r = amdgpu_ring_parse_cs(ring, p, job, ib);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
if (ib->sa_bo)
|
||||
ib->gpu_addr = amdgpu_sa_bo_gpu_addr(ib->sa_bo);
|
||||
} else {
|
||||
ib->ptr = (uint32_t *)kptr;
|
||||
r = amdgpu_ring_patch_cs_in_place(ring, p, job, ib);
|
||||
|
@ -684,16 +684,24 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data,
|
||||
|
||||
switch (args->in.op) {
|
||||
case AMDGPU_CTX_OP_ALLOC_CTX:
|
||||
if (args->in.flags)
|
||||
return -EINVAL;
|
||||
r = amdgpu_ctx_alloc(adev, fpriv, filp, priority, &id);
|
||||
args->out.alloc.ctx_id = id;
|
||||
break;
|
||||
case AMDGPU_CTX_OP_FREE_CTX:
|
||||
if (args->in.flags)
|
||||
return -EINVAL;
|
||||
r = amdgpu_ctx_free(fpriv, id);
|
||||
break;
|
||||
case AMDGPU_CTX_OP_QUERY_STATE:
|
||||
if (args->in.flags)
|
||||
return -EINVAL;
|
||||
r = amdgpu_ctx_query(adev, fpriv, id, &args->out);
|
||||
break;
|
||||
case AMDGPU_CTX_OP_QUERY_STATE2:
|
||||
if (args->in.flags)
|
||||
return -EINVAL;
|
||||
r = amdgpu_ctx_query2(adev, fpriv, id, &args->out);
|
||||
break;
|
||||
case AMDGPU_CTX_OP_GET_STABLE_PSTATE:
|
||||
|
@ -166,6 +166,9 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp, const char *buf, size_t
|
||||
if (ret)
|
||||
return -EFAULT;
|
||||
|
||||
if (ta_bin_len > PSP_1_MEG)
|
||||
return -EINVAL;
|
||||
|
||||
copy_pos += sizeof(uint32_t);
|
||||
|
||||
ta_bin = kzalloc(ta_bin_len, GFP_KERNEL);
|
||||
|
@ -135,6 +135,10 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev)
|
||||
}
|
||||
}
|
||||
|
||||
/* from vcn4 and above, only unified queue is used */
|
||||
adev->vcn.using_unified_queue =
|
||||
adev->ip_versions[UVD_HWIP][0] >= IP_VERSION(4, 0, 0);
|
||||
|
||||
hdr = (const struct common_firmware_header *)adev->vcn.fw->data;
|
||||
adev->vcn.fw_version = le32_to_cpu(hdr->ucode_version);
|
||||
|
||||
@ -259,18 +263,6 @@ int amdgpu_vcn_sw_fini(struct amdgpu_device *adev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* from vcn4 and above, only unified queue is used */
|
||||
static bool amdgpu_vcn_using_unified_queue(struct amdgpu_ring *ring)
|
||||
{
|
||||
struct amdgpu_device *adev = ring->adev;
|
||||
bool ret = false;
|
||||
|
||||
if (adev->ip_versions[UVD_HWIP][0] >= IP_VERSION(4, 0, 0))
|
||||
ret = true;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool amdgpu_vcn_is_disabled_vcn(struct amdgpu_device *adev, enum vcn_ring_type type, uint32_t vcn_instance)
|
||||
{
|
||||
bool ret = false;
|
||||
@ -380,7 +372,9 @@ static void amdgpu_vcn_idle_work_handler(struct work_struct *work)
|
||||
for (i = 0; i < adev->vcn.num_enc_rings; ++i)
|
||||
fence[j] += amdgpu_fence_count_emitted(&adev->vcn.inst[j].ring_enc[i]);
|
||||
|
||||
if (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG) {
|
||||
/* Only set DPG pause for VCN3 or below, VCN4 and above will be handled by FW */
|
||||
if (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG &&
|
||||
!adev->vcn.using_unified_queue) {
|
||||
struct dpg_pause_state new_state;
|
||||
|
||||
if (fence[j] ||
|
||||
@ -426,7 +420,9 @@ void amdgpu_vcn_ring_begin_use(struct amdgpu_ring *ring)
|
||||
amdgpu_device_ip_set_powergating_state(adev, AMD_IP_BLOCK_TYPE_VCN,
|
||||
AMD_PG_STATE_UNGATE);
|
||||
|
||||
if (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG) {
|
||||
/* Only set DPG pause for VCN3 or below, VCN4 and above will be handled by FW */
|
||||
if (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG &&
|
||||
!adev->vcn.using_unified_queue) {
|
||||
struct dpg_pause_state new_state;
|
||||
|
||||
if (ring->funcs->type == AMDGPU_RING_TYPE_VCN_ENC) {
|
||||
@ -452,8 +448,12 @@ void amdgpu_vcn_ring_begin_use(struct amdgpu_ring *ring)
|
||||
|
||||
void amdgpu_vcn_ring_end_use(struct amdgpu_ring *ring)
|
||||
{
|
||||
struct amdgpu_device *adev = ring->adev;
|
||||
|
||||
/* Only set DPG pause for VCN3 or below, VCN4 and above will be handled by FW */
|
||||
if (ring->adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG &&
|
||||
ring->funcs->type == AMDGPU_RING_TYPE_VCN_ENC)
|
||||
ring->funcs->type == AMDGPU_RING_TYPE_VCN_ENC &&
|
||||
!adev->vcn.using_unified_queue)
|
||||
atomic_dec(&ring->adev->vcn.inst[ring->me].dpg_enc_submission_cnt);
|
||||
|
||||
atomic_dec(&ring->adev->vcn.total_submission_cnt);
|
||||
@ -707,12 +707,11 @@ static int amdgpu_vcn_dec_sw_send_msg(struct amdgpu_ring *ring,
|
||||
struct amdgpu_job *job;
|
||||
struct amdgpu_ib *ib;
|
||||
uint64_t addr = AMDGPU_GPU_PAGE_ALIGN(ib_msg->gpu_addr);
|
||||
bool sq = amdgpu_vcn_using_unified_queue(ring);
|
||||
uint32_t *ib_checksum;
|
||||
uint32_t ib_pack_in_dw;
|
||||
int i, r;
|
||||
|
||||
if (sq)
|
||||
if (adev->vcn.using_unified_queue)
|
||||
ib_size_dw += 8;
|
||||
|
||||
r = amdgpu_job_alloc_with_ib(ring->adev, NULL, NULL,
|
||||
@ -725,7 +724,7 @@ static int amdgpu_vcn_dec_sw_send_msg(struct amdgpu_ring *ring,
|
||||
ib->length_dw = 0;
|
||||
|
||||
/* single queue headers */
|
||||
if (sq) {
|
||||
if (adev->vcn.using_unified_queue) {
|
||||
ib_pack_in_dw = sizeof(struct amdgpu_vcn_decode_buffer) / sizeof(uint32_t)
|
||||
+ 4 + 2; /* engine info + decoding ib in dw */
|
||||
ib_checksum = amdgpu_vcn_unified_ring_ib_header(ib, ib_pack_in_dw, false);
|
||||
@ -744,7 +743,7 @@ static int amdgpu_vcn_dec_sw_send_msg(struct amdgpu_ring *ring,
|
||||
for (i = ib->length_dw; i < ib_size_dw; ++i)
|
||||
ib->ptr[i] = 0x0;
|
||||
|
||||
if (sq)
|
||||
if (adev->vcn.using_unified_queue)
|
||||
amdgpu_vcn_unified_ring_ib_checksum(&ib_checksum, ib_pack_in_dw);
|
||||
|
||||
r = amdgpu_job_submit_direct(job, ring, &f);
|
||||
@ -834,15 +833,15 @@ static int amdgpu_vcn_enc_get_create_msg(struct amdgpu_ring *ring, uint32_t hand
|
||||
struct dma_fence **fence)
|
||||
{
|
||||
unsigned int ib_size_dw = 16;
|
||||
struct amdgpu_device *adev = ring->adev;
|
||||
struct amdgpu_job *job;
|
||||
struct amdgpu_ib *ib;
|
||||
struct dma_fence *f = NULL;
|
||||
uint32_t *ib_checksum = NULL;
|
||||
uint64_t addr;
|
||||
bool sq = amdgpu_vcn_using_unified_queue(ring);
|
||||
int i, r;
|
||||
|
||||
if (sq)
|
||||
if (adev->vcn.using_unified_queue)
|
||||
ib_size_dw += 8;
|
||||
|
||||
r = amdgpu_job_alloc_with_ib(ring->adev, NULL, NULL,
|
||||
@ -856,7 +855,7 @@ static int amdgpu_vcn_enc_get_create_msg(struct amdgpu_ring *ring, uint32_t hand
|
||||
|
||||
ib->length_dw = 0;
|
||||
|
||||
if (sq)
|
||||
if (adev->vcn.using_unified_queue)
|
||||
ib_checksum = amdgpu_vcn_unified_ring_ib_header(ib, 0x11, true);
|
||||
|
||||
ib->ptr[ib->length_dw++] = 0x00000018;
|
||||
@ -878,7 +877,7 @@ static int amdgpu_vcn_enc_get_create_msg(struct amdgpu_ring *ring, uint32_t hand
|
||||
for (i = ib->length_dw; i < ib_size_dw; ++i)
|
||||
ib->ptr[i] = 0x0;
|
||||
|
||||
if (sq)
|
||||
if (adev->vcn.using_unified_queue)
|
||||
amdgpu_vcn_unified_ring_ib_checksum(&ib_checksum, 0x11);
|
||||
|
||||
r = amdgpu_job_submit_direct(job, ring, &f);
|
||||
@ -901,15 +900,15 @@ static int amdgpu_vcn_enc_get_destroy_msg(struct amdgpu_ring *ring, uint32_t han
|
||||
struct dma_fence **fence)
|
||||
{
|
||||
unsigned int ib_size_dw = 16;
|
||||
struct amdgpu_device *adev = ring->adev;
|
||||
struct amdgpu_job *job;
|
||||
struct amdgpu_ib *ib;
|
||||
struct dma_fence *f = NULL;
|
||||
uint32_t *ib_checksum = NULL;
|
||||
uint64_t addr;
|
||||
bool sq = amdgpu_vcn_using_unified_queue(ring);
|
||||
int i, r;
|
||||
|
||||
if (sq)
|
||||
if (adev->vcn.using_unified_queue)
|
||||
ib_size_dw += 8;
|
||||
|
||||
r = amdgpu_job_alloc_with_ib(ring->adev, NULL, NULL,
|
||||
@ -923,7 +922,7 @@ static int amdgpu_vcn_enc_get_destroy_msg(struct amdgpu_ring *ring, uint32_t han
|
||||
|
||||
ib->length_dw = 0;
|
||||
|
||||
if (sq)
|
||||
if (adev->vcn.using_unified_queue)
|
||||
ib_checksum = amdgpu_vcn_unified_ring_ib_header(ib, 0x11, true);
|
||||
|
||||
ib->ptr[ib->length_dw++] = 0x00000018;
|
||||
@ -945,7 +944,7 @@ static int amdgpu_vcn_enc_get_destroy_msg(struct amdgpu_ring *ring, uint32_t han
|
||||
for (i = ib->length_dw; i < ib_size_dw; ++i)
|
||||
ib->ptr[i] = 0x0;
|
||||
|
||||
if (sq)
|
||||
if (adev->vcn.using_unified_queue)
|
||||
amdgpu_vcn_unified_ring_ib_checksum(&ib_checksum, 0x11);
|
||||
|
||||
r = amdgpu_job_submit_direct(job, ring, &f);
|
||||
|
@ -284,6 +284,7 @@ struct amdgpu_vcn {
|
||||
|
||||
uint16_t inst_mask;
|
||||
uint8_t num_inst_per_aid;
|
||||
bool using_unified_queue;
|
||||
};
|
||||
|
||||
struct amdgpu_fw_shared_rb_ptrs_struct {
|
||||
|
@ -766,11 +766,15 @@ int amdgpu_vm_pde_update(struct amdgpu_vm_update_params *params,
|
||||
struct amdgpu_vm_bo_base *entry)
|
||||
{
|
||||
struct amdgpu_vm_bo_base *parent = amdgpu_vm_pt_parent(entry);
|
||||
struct amdgpu_bo *bo = parent->bo, *pbo;
|
||||
struct amdgpu_bo *bo, *pbo;
|
||||
struct amdgpu_vm *vm = params->vm;
|
||||
uint64_t pde, pt, flags;
|
||||
unsigned int level;
|
||||
|
||||
if (WARN_ON(!parent))
|
||||
return -EINVAL;
|
||||
|
||||
bo = parent->bo;
|
||||
for (level = 0, pbo = bo->parent; pbo; ++level)
|
||||
pbo = pbo->parent;
|
||||
|
||||
|
@ -7892,22 +7892,15 @@ static int gfx_v10_0_update_gfx_clock_gating(struct amdgpu_device *adev,
|
||||
static void gfx_v10_0_update_spm_vmid_internal(struct amdgpu_device *adev,
|
||||
unsigned int vmid)
|
||||
{
|
||||
u32 reg, data;
|
||||
u32 data;
|
||||
|
||||
/* not for *_SOC15 */
|
||||
reg = SOC15_REG_OFFSET(GC, 0, mmRLC_SPM_MC_CNTL);
|
||||
if (amdgpu_sriov_is_pp_one_vf(adev))
|
||||
data = RREG32_NO_KIQ(reg);
|
||||
else
|
||||
data = RREG32_SOC15(GC, 0, mmRLC_SPM_MC_CNTL);
|
||||
data = RREG32_SOC15_NO_KIQ(GC, 0, mmRLC_SPM_MC_CNTL);
|
||||
|
||||
data &= ~RLC_SPM_MC_CNTL__RLC_SPM_VMID_MASK;
|
||||
data |= (vmid & RLC_SPM_MC_CNTL__RLC_SPM_VMID_MASK) << RLC_SPM_MC_CNTL__RLC_SPM_VMID__SHIFT;
|
||||
|
||||
if (amdgpu_sriov_is_pp_one_vf(adev))
|
||||
WREG32_SOC15_NO_KIQ(GC, 0, mmRLC_SPM_MC_CNTL, data);
|
||||
else
|
||||
WREG32_SOC15(GC, 0, mmRLC_SPM_MC_CNTL, data);
|
||||
WREG32_SOC15_NO_KIQ(GC, 0, mmRLC_SPM_MC_CNTL, data);
|
||||
}
|
||||
|
||||
static void gfx_v10_0_update_spm_vmid(struct amdgpu_device *adev, unsigned int vmid)
|
||||
|
@ -4961,23 +4961,16 @@ static int gfx_v11_0_update_gfx_clock_gating(struct amdgpu_device *adev,
|
||||
|
||||
static void gfx_v11_0_update_spm_vmid(struct amdgpu_device *adev, unsigned vmid)
|
||||
{
|
||||
u32 reg, data;
|
||||
u32 data;
|
||||
|
||||
amdgpu_gfx_off_ctrl(adev, false);
|
||||
|
||||
reg = SOC15_REG_OFFSET(GC, 0, regRLC_SPM_MC_CNTL);
|
||||
if (amdgpu_sriov_is_pp_one_vf(adev))
|
||||
data = RREG32_NO_KIQ(reg);
|
||||
else
|
||||
data = RREG32(reg);
|
||||
data = RREG32_SOC15_NO_KIQ(GC, 0, regRLC_SPM_MC_CNTL);
|
||||
|
||||
data &= ~RLC_SPM_MC_CNTL__RLC_SPM_VMID_MASK;
|
||||
data |= (vmid & RLC_SPM_MC_CNTL__RLC_SPM_VMID_MASK) << RLC_SPM_MC_CNTL__RLC_SPM_VMID__SHIFT;
|
||||
|
||||
if (amdgpu_sriov_is_pp_one_vf(adev))
|
||||
WREG32_SOC15_NO_KIQ(GC, 0, regRLC_SPM_MC_CNTL, data);
|
||||
else
|
||||
WREG32_SOC15(GC, 0, regRLC_SPM_MC_CNTL, data);
|
||||
WREG32_SOC15_NO_KIQ(GC, 0, regRLC_SPM_MC_CNTL, data);
|
||||
|
||||
amdgpu_gfx_off_ctrl(adev, true);
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ MODULE_FIRMWARE("amdgpu/gc_11_0_4_imu.bin");
|
||||
|
||||
static int imu_v11_0_init_microcode(struct amdgpu_device *adev)
|
||||
{
|
||||
char fw_name[40];
|
||||
char fw_name[45];
|
||||
char ucode_prefix[30];
|
||||
int err;
|
||||
const struct imu_firmware_header_v1_0 *imu_hdr;
|
||||
|
@ -543,11 +543,11 @@ void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring,
|
||||
|
||||
amdgpu_ring_write(ring, PACKETJ(mmUVD_LMI_JRBC_IB_VMID_INTERNAL_OFFSET,
|
||||
0, 0, PACKETJ_TYPE0));
|
||||
amdgpu_ring_write(ring, (vmid | (vmid << 4)));
|
||||
amdgpu_ring_write(ring, (vmid | (vmid << 4) | (vmid << 8)));
|
||||
|
||||
amdgpu_ring_write(ring, PACKETJ(mmUVD_LMI_JPEG_VMID_INTERNAL_OFFSET,
|
||||
0, 0, PACKETJ_TYPE0));
|
||||
amdgpu_ring_write(ring, (vmid | (vmid << 4)));
|
||||
amdgpu_ring_write(ring, (vmid | (vmid << 4) | (vmid << 8)));
|
||||
|
||||
amdgpu_ring_write(ring, PACKETJ(mmUVD_LMI_JRBC_IB_64BIT_BAR_LOW_INTERNAL_OFFSET,
|
||||
0, 0, PACKETJ_TYPE0));
|
||||
|
@ -23,6 +23,7 @@
|
||||
|
||||
#include "amdgpu.h"
|
||||
#include "amdgpu_jpeg.h"
|
||||
#include "amdgpu_cs.h"
|
||||
#include "soc15.h"
|
||||
#include "soc15d.h"
|
||||
#include "jpeg_v4_0_3.h"
|
||||
@ -769,11 +770,15 @@ static void jpeg_v4_0_3_dec_ring_emit_ib(struct amdgpu_ring *ring,
|
||||
|
||||
amdgpu_ring_write(ring, PACKETJ(regUVD_LMI_JRBC_IB_VMID_INTERNAL_OFFSET,
|
||||
0, 0, PACKETJ_TYPE0));
|
||||
amdgpu_ring_write(ring, (vmid | (vmid << 4)));
|
||||
|
||||
if (ring->funcs->parse_cs)
|
||||
amdgpu_ring_write(ring, 0);
|
||||
else
|
||||
amdgpu_ring_write(ring, (vmid | (vmid << 4) | (vmid << 8)));
|
||||
|
||||
amdgpu_ring_write(ring, PACKETJ(regUVD_LMI_JPEG_VMID_INTERNAL_OFFSET,
|
||||
0, 0, PACKETJ_TYPE0));
|
||||
amdgpu_ring_write(ring, (vmid | (vmid << 4)));
|
||||
amdgpu_ring_write(ring, (vmid | (vmid << 4) | (vmid << 8)));
|
||||
|
||||
amdgpu_ring_write(ring, PACKETJ(regUVD_LMI_JRBC_IB_64BIT_BAR_LOW_INTERNAL_OFFSET,
|
||||
0, 0, PACKETJ_TYPE0));
|
||||
@ -1052,6 +1057,7 @@ static const struct amdgpu_ring_funcs jpeg_v4_0_3_dec_ring_vm_funcs = {
|
||||
.get_rptr = jpeg_v4_0_3_dec_ring_get_rptr,
|
||||
.get_wptr = jpeg_v4_0_3_dec_ring_get_wptr,
|
||||
.set_wptr = jpeg_v4_0_3_dec_ring_set_wptr,
|
||||
.parse_cs = jpeg_v4_0_3_dec_ring_parse_cs,
|
||||
.emit_frame_size =
|
||||
SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 +
|
||||
SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 8 +
|
||||
@ -1216,3 +1222,56 @@ static void jpeg_v4_0_3_set_ras_funcs(struct amdgpu_device *adev)
|
||||
{
|
||||
adev->jpeg.ras = &jpeg_v4_0_3_ras;
|
||||
}
|
||||
|
||||
/**
|
||||
* jpeg_v4_0_3_dec_ring_parse_cs - command submission parser
|
||||
*
|
||||
* @parser: Command submission parser context
|
||||
* @job: the job to parse
|
||||
* @ib: the IB to parse
|
||||
*
|
||||
* Parse the command stream, return -EINVAL for invalid packet,
|
||||
* 0 otherwise
|
||||
*/
|
||||
int jpeg_v4_0_3_dec_ring_parse_cs(struct amdgpu_cs_parser *parser,
|
||||
struct amdgpu_job *job,
|
||||
struct amdgpu_ib *ib)
|
||||
{
|
||||
uint32_t i, reg, res, cond, type;
|
||||
struct amdgpu_device *adev = parser->adev;
|
||||
|
||||
for (i = 0; i < ib->length_dw ; i += 2) {
|
||||
reg = CP_PACKETJ_GET_REG(ib->ptr[i]);
|
||||
res = CP_PACKETJ_GET_RES(ib->ptr[i]);
|
||||
cond = CP_PACKETJ_GET_COND(ib->ptr[i]);
|
||||
type = CP_PACKETJ_GET_TYPE(ib->ptr[i]);
|
||||
|
||||
if (res) /* only support 0 at the moment */
|
||||
return -EINVAL;
|
||||
|
||||
switch (type) {
|
||||
case PACKETJ_TYPE0:
|
||||
if (cond != PACKETJ_CONDITION_CHECK0 || reg < JPEG_REG_RANGE_START || reg > JPEG_REG_RANGE_END) {
|
||||
dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]);
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
case PACKETJ_TYPE3:
|
||||
if (cond != PACKETJ_CONDITION_CHECK3 || reg < JPEG_REG_RANGE_START || reg > JPEG_REG_RANGE_END) {
|
||||
dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]);
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
case PACKETJ_TYPE6:
|
||||
if (ib->ptr[i] == CP_PACKETJ_NOP)
|
||||
continue;
|
||||
dev_err(adev->dev, "Invalid packet [0x%08x]!\n", ib->ptr[i]);
|
||||
return -EINVAL;
|
||||
default:
|
||||
dev_err(adev->dev, "Unknown packet type %d !\n", type);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -46,6 +46,12 @@
|
||||
|
||||
#define JRBC_DEC_EXTERNAL_REG_WRITE_ADDR 0x18000
|
||||
|
||||
#define JPEG_REG_RANGE_START 0x4000
|
||||
#define JPEG_REG_RANGE_END 0x41c2
|
||||
|
||||
extern const struct amdgpu_ip_block_version jpeg_v4_0_3_ip_block;
|
||||
|
||||
int jpeg_v4_0_3_dec_ring_parse_cs(struct amdgpu_cs_parser *parser,
|
||||
struct amdgpu_job *job,
|
||||
struct amdgpu_ib *ib);
|
||||
#endif /* __JPEG_V4_0_3_H__ */
|
||||
|
@ -76,6 +76,12 @@
|
||||
((cond & 0xF) << 24) | \
|
||||
((type & 0xF) << 28))
|
||||
|
||||
#define CP_PACKETJ_NOP 0x60000000
|
||||
#define CP_PACKETJ_GET_REG(x) ((x) & 0x3FFFF)
|
||||
#define CP_PACKETJ_GET_RES(x) (((x) >> 18) & 0x3F)
|
||||
#define CP_PACKETJ_GET_COND(x) (((x) >> 24) & 0xF)
|
||||
#define CP_PACKETJ_GET_TYPE(x) (((x) >> 28) & 0xF)
|
||||
|
||||
/* Packet 3 types */
|
||||
#define PACKET3_NOP 0x10
|
||||
#define PACKET3_SET_BASE 0x11
|
||||
|
@ -1432,17 +1432,23 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep,
|
||||
goto sync_memory_failed;
|
||||
}
|
||||
}
|
||||
|
||||
/* Flush TLBs after waiting for the page table updates to complete */
|
||||
for (i = 0; i < args->n_devices; i++) {
|
||||
peer_pdd = kfd_process_device_data_by_id(p, devices_arr[i]);
|
||||
if (WARN_ON_ONCE(!peer_pdd))
|
||||
continue;
|
||||
if (flush_tlb)
|
||||
kfd_flush_tlb(peer_pdd, TLB_FLUSH_HEAVYWEIGHT);
|
||||
|
||||
/* Remove dma mapping after tlb flush to avoid IO_PAGE_FAULT */
|
||||
err = amdgpu_amdkfd_gpuvm_dmaunmap_mem(mem, peer_pdd->drm_priv);
|
||||
if (err)
|
||||
goto sync_memory_failed;
|
||||
}
|
||||
|
||||
mutex_unlock(&p->mutex);
|
||||
|
||||
if (flush_tlb) {
|
||||
/* Flush TLBs after waiting for the page table updates to complete */
|
||||
for (i = 0; i < args->n_devices; i++) {
|
||||
peer_pdd = kfd_process_device_data_by_id(p, devices_arr[i]);
|
||||
if (WARN_ON_ONCE(!peer_pdd))
|
||||
continue;
|
||||
kfd_flush_tlb(peer_pdd, TLB_FLUSH_HEAVYWEIGHT);
|
||||
}
|
||||
}
|
||||
kfree(devices_arr);
|
||||
|
||||
return 0;
|
||||
|
@ -3521,7 +3521,7 @@ void dcn10_set_cursor_position(struct pipe_ctx *pipe_ctx)
|
||||
(int)hubp->curs_attr.width || pos_cpy.x
|
||||
<= (int)hubp->curs_attr.width +
|
||||
pipe_ctx->plane_state->src_rect.x) {
|
||||
pos_cpy.x = temp_x + viewport_width;
|
||||
pos_cpy.x = 2 * viewport_width - temp_x;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -3614,7 +3614,7 @@ void dcn10_set_cursor_position(struct pipe_ctx *pipe_ctx)
|
||||
(int)hubp->curs_attr.width || pos_cpy.x
|
||||
<= (int)hubp->curs_attr.width +
|
||||
pipe_ctx->plane_state->src_rect.x) {
|
||||
pos_cpy.x = 2 * viewport_width - temp_x;
|
||||
pos_cpy.x = temp_x + viewport_width;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -1756,6 +1756,9 @@ static bool dcn321_resource_construct(
|
||||
dc->caps.color.mpc.ogam_rom_caps.hlg = 0;
|
||||
dc->caps.color.mpc.ocsc = 1;
|
||||
|
||||
/* Use pipe context based otg sync logic */
|
||||
dc->config.use_pipe_ctx_sync_logic = true;
|
||||
|
||||
dc->config.dc_mode_clk_limit_support = true;
|
||||
/* read VBIOS LTTPR caps */
|
||||
{
|
||||
|
@ -1473,9 +1473,9 @@ static ssize_t amdgpu_set_pp_power_profile_mode(struct device *dev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static unsigned int amdgpu_hwmon_get_sensor_generic(struct amdgpu_device *adev,
|
||||
enum amd_pp_sensors sensor,
|
||||
void *query)
|
||||
static int amdgpu_hwmon_get_sensor_generic(struct amdgpu_device *adev,
|
||||
enum amd_pp_sensors sensor,
|
||||
void *query)
|
||||
{
|
||||
int r, size = sizeof(uint32_t);
|
||||
|
||||
@ -2789,8 +2789,8 @@ static ssize_t amdgpu_hwmon_show_vddnb_label(struct device *dev,
|
||||
return sysfs_emit(buf, "vddnb\n");
|
||||
}
|
||||
|
||||
static unsigned int amdgpu_hwmon_get_power(struct device *dev,
|
||||
enum amd_pp_sensors sensor)
|
||||
static int amdgpu_hwmon_get_power(struct device *dev,
|
||||
enum amd_pp_sensors sensor)
|
||||
{
|
||||
struct amdgpu_device *adev = dev_get_drvdata(dev);
|
||||
unsigned int uw;
|
||||
@ -2811,7 +2811,7 @@ static ssize_t amdgpu_hwmon_show_power_avg(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
unsigned int val;
|
||||
int val;
|
||||
|
||||
val = amdgpu_hwmon_get_power(dev, AMDGPU_PP_SENSOR_GPU_AVG_POWER);
|
||||
if (val < 0)
|
||||
@ -2824,7 +2824,7 @@ static ssize_t amdgpu_hwmon_show_power_input(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
unsigned int val;
|
||||
int val;
|
||||
|
||||
val = amdgpu_hwmon_get_power(dev, AMDGPU_PP_SENSOR_GPU_INPUT_POWER);
|
||||
if (val < 0)
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: openssl.1,v 1.160 2024/08/29 17:01:40 tb Exp $
|
||||
.\" $OpenBSD: openssl.1,v 1.161 2024/08/30 06:05:10 jmc Exp $
|
||||
.\" ====================================================================
|
||||
.\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
|
||||
.\"
|
||||
@ -110,7 +110,7 @@
|
||||
.\" copied and put under another distribution licence
|
||||
.\" [including the GNU Public Licence.]
|
||||
.\"
|
||||
.Dd $Mdocdate: August 29 2024 $
|
||||
.Dd $Mdocdate: August 30 2024 $
|
||||
.Dt OPENSSL 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -3330,7 +3330,6 @@ The output format.
|
||||
The key password source.
|
||||
.It Fl passout Ar arg
|
||||
The output file password source.
|
||||
or the public component of a key pair.
|
||||
.It Fl pubin
|
||||
Read in a public key, not a private key.
|
||||
.It Fl pubout
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: patch.c,v 1.76 2024/03/22 19:22:23 jcs Exp $ */
|
||||
/* $OpenBSD: patch.c,v 1.77 2024/08/30 07:11:02 op Exp $ */
|
||||
|
||||
/*
|
||||
* patch - a program to apply diffs to original files
|
||||
@ -542,6 +542,7 @@ get_some_switches(void)
|
||||
{NULL, 0, 0, 0}
|
||||
};
|
||||
int ch;
|
||||
const char *errstr;
|
||||
|
||||
rejname[0] = '\0';
|
||||
Argc_last = Argc;
|
||||
@ -598,7 +599,10 @@ get_some_switches(void)
|
||||
force = true;
|
||||
break;
|
||||
case 'F':
|
||||
maxfuzz = atoi(optarg);
|
||||
maxfuzz = strtonum(optarg, 0, INT_MAX, &errstr);
|
||||
if (errstr != NULL)
|
||||
fatal("maximum fuzz is %s: %s\n",
|
||||
errstr, optarg);
|
||||
break;
|
||||
case 'i':
|
||||
if (++filec == MAXFILEC)
|
||||
@ -618,7 +622,10 @@ get_some_switches(void)
|
||||
outname = xstrdup(optarg);
|
||||
break;
|
||||
case 'p':
|
||||
strippath = atoi(optarg);
|
||||
strippath = strtonum(optarg, 0, INT_MAX, &errstr);
|
||||
if (errstr != NULL)
|
||||
fatal("strip count is %s: %s\n",
|
||||
errstr, optarg);
|
||||
break;
|
||||
case 'r':
|
||||
if (strlcpy(rejname, optarg,
|
||||
@ -647,7 +654,10 @@ get_some_switches(void)
|
||||
break;
|
||||
#ifdef DEBUGGING
|
||||
case 'x':
|
||||
debug = atoi(optarg);
|
||||
debug = strtonum(optarg, 0, INT_MAX, &errstr);
|
||||
if (errstr != NULL)
|
||||
fatal("debug number is %s: %s\n",
|
||||
errstr, optarg);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: vacation.c,v 1.38 2019/06/28 13:35:05 deraadt Exp $ */
|
||||
/* $OpenBSD: vacation.c,v 1.39 2024/08/29 21:04:16 op Exp $ */
|
||||
/* $NetBSD: vacation.c,v 1.7 1995/04/29 05:58:27 cgd Exp $ */
|
||||
|
||||
/*
|
||||
@ -246,6 +246,10 @@ readheaders(void)
|
||||
break;
|
||||
for (p = buf + 12; isspace((unsigned char)*p); ++p)
|
||||
;
|
||||
if (*p == '<') {
|
||||
++p;
|
||||
p[strcspn(p, ">")] = '\0';
|
||||
}
|
||||
if (strlcpy(from, p, sizeof(from)) >= sizeof(from)) {
|
||||
syslog(LOG_NOTICE,
|
||||
"Return-Path %s exceeds limits", p);
|
||||
@ -303,13 +307,8 @@ readheaders(void)
|
||||
findme: for (cur = names; !tome && cur; cur = cur->next)
|
||||
tome += nsearch(cur->name, buf);
|
||||
}
|
||||
if (!tome)
|
||||
if (!tome || !*from)
|
||||
exit(0);
|
||||
if (!*from) {
|
||||
syslog(LOG_NOTICE,
|
||||
"no initial \"From\" or \"Return-Path\"line.");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user