sync code with last improvements from OpenBSD
This commit is contained in:
parent
0726fd4247
commit
ba37adff3d
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: changelist,v 1.136 2023/04/24 16:36:54 kn Exp $
|
||||
# $OpenBSD: changelist,v 1.137 2023/09/19 15:02:54 naddy Exp $
|
||||
#
|
||||
# List of files which the security script backs up and checks
|
||||
# for modifications.
|
||||
@ -126,8 +126,6 @@
|
||||
+/etc/soii.key
|
||||
+/etc/spwd.db
|
||||
/etc/ssh/ssh_config
|
||||
+/etc/ssh/ssh_host_dsa_key
|
||||
/etc/ssh/ssh_host_dsa_key.pub
|
||||
+/etc/ssh/ssh_host_ecdsa_key
|
||||
/etc/ssh/ssh_host_ecdsa_key.pub
|
||||
+/etc/ssh/ssh_host_ed25519_key
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $OpenBSD: special,v 1.128 2022/05/12 22:13:06 sthen Exp $
|
||||
# $OpenBSD: special,v 1.129 2023/09/19 15:02:55 naddy Exp $
|
||||
#
|
||||
# Hand-crafted mtree specification for the dangerous files.
|
||||
#
|
||||
@ -101,8 +101,6 @@ soii.key type=file mode=0600 uname=root gname=wheel optional
|
||||
spwd.db type=file mode=0640 uname=root gname=_shadow
|
||||
ssh type=dir mode=0755 uname=root gname=wheel optional
|
||||
ssh_config type=file mode=0644 uname=root gname=wheel
|
||||
ssh_host_dsa_key type=file mode=0600 uname=root gname=wheel optional
|
||||
ssh_host_dsa_key.pub type=file mode=0644 uname=root gname=wheel optional
|
||||
ssh_host_ecdsa_key type=file mode=0600 uname=root gname=wheel optional
|
||||
ssh_host_ecdsa_key.pub type=file mode=0644 uname=root gname=wheel optional
|
||||
ssh_host_ed25519_key type=file mode=0600 uname=root gname=wheel optional
|
||||
|
@ -1,8 +1,25 @@
|
||||
.\" $OpenBSD: SSL_CTX_set_default_passwd_cb.3,v 1.7 2018/04/02 02:06:14 schwarze Exp $
|
||||
.\" $OpenBSD: SSL_CTX_set_default_passwd_cb.3,v 1.9 2023/09/19 09:40:35 schwarze Exp $
|
||||
.\" full merge up to: OpenSSL 9b86974e Aug 17 15:21:33 2015 -0400
|
||||
.\" selective merge up to: OpenSSL 2947af32 Nov 19 00:10:05 2016 +0100
|
||||
.\" selective merge up to: OpenSSL 18bad535 Apr 9 15:13:55 2019 +0100
|
||||
.\"
|
||||
.\" This file was written by Lutz Jaenicke <jaenicke@openssl.org>
|
||||
.\" This file is a derived work.
|
||||
.\" The changes are covered by the following Copyright and license:
|
||||
.\"
|
||||
.\" Copyright (c) 2023 Ingo Schwarze <schwarze@openbsd.org>
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and distribute this software for any
|
||||
.\" purpose with or without fee is hereby granted, provided that the above
|
||||
.\" copyright notice and this permission notice appear in all copies.
|
||||
.\"
|
||||
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
.\" 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.
|
||||
.\"
|
||||
.\" The original file was written by Lutz Jaenicke <jaenicke@openssl.org>
|
||||
.\" and Christian Heimes <cheimes@redhat.com>.
|
||||
.\" Copyright (c) 2000, 2001, 2016 The OpenSSL Project. All rights reserved.
|
||||
.\"
|
||||
@ -50,75 +67,95 @@
|
||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: April 2 2018 $
|
||||
.Dd $Mdocdate: September 19 2023 $
|
||||
.Dt SSL_CTX_SET_DEFAULT_PASSWD_CB 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm SSL_CTX_set_default_passwd_cb ,
|
||||
.Nm SSL_CTX_set_default_passwd_cb_userdata ,
|
||||
.Nm SSL_CTX_get_default_passwd_cb ,
|
||||
.Nm SSL_CTX_get_default_passwd_cb_userdata ,
|
||||
.Nm pem_password_cb
|
||||
.Nm SSL_CTX_get_default_passwd_cb_userdata
|
||||
.Nd set or get passwd callback for encrypted PEM file handling
|
||||
.Sh SYNOPSIS
|
||||
.In openssl/ssl.h
|
||||
.Ft void
|
||||
.Fn SSL_CTX_set_default_passwd_cb "SSL_CTX *ctx" "pem_password_cb *cb"
|
||||
.Ft void
|
||||
.Fn SSL_CTX_set_default_passwd_cb_userdata "SSL_CTX *ctx" "void *u"
|
||||
.Fn SSL_CTX_set_default_passwd_cb_userdata "SSL_CTX *ctx" "void *userdata"
|
||||
.Ft pem_password_cb *
|
||||
.Fn SSL_CTX_get_default_passwd_cb "SSL_CTX *ctx"
|
||||
.Ft void *
|
||||
.Fn SSL_CTX_get_default_passwd_cb_userdata "SSL_CTX *ctx"
|
||||
.In openssl/pem.h
|
||||
.Ft typedef int
|
||||
.Fn pem_password_cb "char *buf" "int size" "int rwflag" "void *userdata"
|
||||
.Sh DESCRIPTION
|
||||
.Fn SSL_CTX_set_default_passwd_cb
|
||||
sets the default password callback called when loading/storing a PEM
|
||||
certificate with encryption.
|
||||
sets the password callback for loading a certificate or private key
|
||||
from encrypted PEM format.
|
||||
In particular, the callback is used by
|
||||
.Xr SSL_CTX_use_certificate_file 3 ,
|
||||
.Xr SSL_use_certificate_file 3 ,
|
||||
.Xr SSL_CTX_use_certificate_chain_file 3 ,
|
||||
.Xr SSL_use_certificate_chain_file 3 ,
|
||||
.Xr SSL_CTX_use_certificate_chain_mem 3 ,
|
||||
.Xr SSL_CTX_use_PrivateKey_file 3 ,
|
||||
.Xr SSL_use_PrivateKey_file 3 ,
|
||||
.Xr SSL_CTX_use_RSAPrivateKey_file 3 ,
|
||||
and
|
||||
.Xr SSL_use_RSAPrivateKey_file 3 .
|
||||
.Pp
|
||||
The function pointer type of the
|
||||
.Fa cb
|
||||
argument is documented in the
|
||||
.Xr pem_password_cb 3
|
||||
manual page.
|
||||
If
|
||||
.Fn SSL_CTX_set_default_passwd_cb
|
||||
is not called on
|
||||
.Fa ctx
|
||||
or if it is called with a
|
||||
.Fa cb
|
||||
argument of
|
||||
.Dv NULL ,
|
||||
.Xr PEM_def_callback 3
|
||||
is used instead.
|
||||
.Pp
|
||||
.Fn SSL_CTX_set_default_passwd_cb_userdata
|
||||
sets a pointer to userdata
|
||||
.Fa u
|
||||
sets a pointer to the
|
||||
.Fa userdata
|
||||
which will be provided to the password callback on invocation.
|
||||
.Pp
|
||||
The
|
||||
password callback
|
||||
.Fa cb ,
|
||||
which must be provided by the application,
|
||||
hands back the password to be used during decryption.
|
||||
On invocation a pointer to
|
||||
.Fa userdata
|
||||
is provided.
|
||||
The password callback must write the password into the provided buffer
|
||||
.Fa buf
|
||||
which is of size
|
||||
.Fa size .
|
||||
The actual length of the password must be returned to the calling function.
|
||||
.Fa rwflag
|
||||
indicates whether the callback is used for reading/decryption
|
||||
.Pq Fa rwflag No = 0
|
||||
or writing/encryption
|
||||
.Pq Fa rwflag No = 1 .
|
||||
Since the
|
||||
.Fa cb
|
||||
passed to
|
||||
.Fn SSL_CTX_set_default_passwd_cb
|
||||
will only be used for reading and decryption and not for writing and
|
||||
encryption, the library will only call it with a
|
||||
.Fa verify
|
||||
argument of 0.
|
||||
.Pp
|
||||
When loading or storing private keys, a password might be supplied to protect
|
||||
the private key.
|
||||
The way this password can be supplied may depend on the application.
|
||||
If only one private key is handled, it can be practical to have the
|
||||
If an application program only needs to read and decrypt
|
||||
one single private key, it can be practical to have the
|
||||
callback handle the password dialog interactively.
|
||||
If several keys have to be handled, it can be practical to ask for the password
|
||||
once, then keep it in memory and use it several times.
|
||||
In the last case, the password could be stored into the
|
||||
This happens by default if neither
|
||||
.Fn SSL_CTX_set_default_passwd_cb
|
||||
nor
|
||||
.Fn SSL_CTX_set_default_passwd_cb_userdata
|
||||
is called.
|
||||
In that case, the library uses
|
||||
.Xr PEM_def_callback 3
|
||||
with a
|
||||
.Fa userdata
|
||||
storage and the callback only returns the password already stored.
|
||||
argument of
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
When asking for the password interactively, the callback can use
|
||||
.Fa rwflag
|
||||
to check whether an item shall be encrypted
|
||||
.Pq Fa rwflag No = 1 .
|
||||
In this case the password dialog may ask for the same password twice for
|
||||
comparison in order to catch typos which would make decryption impossible.
|
||||
If several keys have to be handled, it can be practical
|
||||
to ask for the password once, for example using
|
||||
.Xr UI_UTIL_read_pw_string 3 ,
|
||||
then keep it in memory and use it several times by passing a pointer to it to
|
||||
.Fn SSL_CTX_set_default_passwd_cb_userdata .
|
||||
.Xr PEM_def_callback 3
|
||||
is able to handle this case, too, so calling
|
||||
.Fn SSL_CTX_set_default_passwd_cb
|
||||
is not needed in this case either.
|
||||
.Pp
|
||||
Other items in PEM formatting (certificates) can also be encrypted; it is
|
||||
however atypical, as certificate information is considered public.
|
||||
@ -137,22 +174,30 @@ or
|
||||
.Dv NULL
|
||||
if none is set.
|
||||
.Sh EXAMPLES
|
||||
The following example returns the password provided as
|
||||
The following example provides a subset of the functionality of
|
||||
.Xr PEM_def_callback 3 ,
|
||||
except that
|
||||
.Xr PEM_def_callback 3
|
||||
does not NUL-terminate and copies up to
|
||||
.Fa size
|
||||
rather than
|
||||
.Fa size No \- 1
|
||||
bytes.
|
||||
It interprets
|
||||
.Fa userdata
|
||||
to the calling function.
|
||||
The password is considered to be a
|
||||
.Sq \e0
|
||||
terminated string.
|
||||
If the password does not fit into the buffer, the password is truncated.
|
||||
as a NUL-terminated string and copies it to the
|
||||
.Fa password
|
||||
buffer, truncating the copy if it does not fit.
|
||||
.Bd -literal
|
||||
int pem_passwd_cb(char *buf, int size, int rwflag, void *password)
|
||||
int
|
||||
trivial_passwd_cb(char *password, int size, int verify, void *userdata)
|
||||
{
|
||||
strncpy(buf, (char *)password, size);
|
||||
buf[size - 1] = '\e0';
|
||||
return strlen(buf);
|
||||
strlcpy(password, userdata, size);
|
||||
return strlen(password);
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr pem_password_cb 3 ,
|
||||
.Xr ssl 3 ,
|
||||
.Xr SSL_CTX_use_certificate 3
|
||||
.Sh HISTORY
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $OpenBSD: ddb.4,v 1.105 2022/12/22 19:53:22 kn Exp $
|
||||
.\" $OpenBSD: ddb.4,v 1.106 2023/09/19 11:36:33 claudio Exp $
|
||||
.\" $NetBSD: ddb.4,v 1.5 1994/11/30 16:22:09 jtc Exp $
|
||||
.\"
|
||||
.\" Mach Operating System
|
||||
@ -25,7 +25,7 @@
|
||||
.\" any improvements or extensions that they make and grant Carnegie Mellon
|
||||
.\" the rights to redistribute these changes.
|
||||
.\"
|
||||
.Dd $Mdocdate: December 22 2022 $
|
||||
.Dd $Mdocdate: September 19 2023 $
|
||||
.Dt DDB 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -771,7 +771,11 @@ Valid modifiers:
|
||||
Print the pagelist for this pool.
|
||||
.El
|
||||
.\" --------------------
|
||||
.It Ic show proc Op Ar addr
|
||||
.It Xo
|
||||
.Ic show proc
|
||||
.Op Cm /t
|
||||
.Op Ar addr
|
||||
.Xc
|
||||
Prints the
|
||||
.Vt struct proc
|
||||
at
|
||||
@ -779,6 +783,11 @@ at
|
||||
If an optional address is not specified,
|
||||
.Li curproc
|
||||
is assumed.
|
||||
The
|
||||
.Cm /t
|
||||
modifier interprets the
|
||||
.Ar addr
|
||||
argument as the TID of a proc.
|
||||
.\" --------------------
|
||||
.It Ic show registers Op Cm /u
|
||||
Display the register set.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: db_command.c,v 1.99 2023/07/02 19:02:27 cheloha Exp $ */
|
||||
/* $OpenBSD: db_command.c,v 1.100 2023/09/19 11:35:30 claudio Exp $ */
|
||||
/* $NetBSD: db_command.c,v 1.20 1996/03/30 22:30:05 christos Exp $ */
|
||||
|
||||
/*
|
||||
@ -541,6 +541,13 @@ db_proc_print_cmd(db_expr_t addr, int have_addr, db_expr_t count, char *modif)
|
||||
{
|
||||
if (!have_addr)
|
||||
addr = (db_expr_t)curproc;
|
||||
if (modif[0] == 't') {
|
||||
addr = (db_expr_t)tfind((pid_t)addr);
|
||||
if (addr == 0) {
|
||||
db_printf("not found\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
proc_printit((struct proc *)addr, modif, db_printf);
|
||||
}
|
||||
|
@ -38,6 +38,8 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
#include <drm/drm_damage_helper.h>
|
||||
#include <drm/drm_drv.h>
|
||||
#include <drm/drm_edid.h>
|
||||
#include <drm/drm_gem_framebuffer_helper.h>
|
||||
#include <drm/drm_fb_helper.h>
|
||||
@ -493,11 +495,29 @@ bool amdgpu_display_ddc_probe(struct amdgpu_connector *amdgpu_connector,
|
||||
return true;
|
||||
}
|
||||
|
||||
static int amdgpu_dirtyfb(struct drm_framebuffer *fb, struct drm_file *file,
|
||||
unsigned int flags, unsigned int color,
|
||||
struct drm_clip_rect *clips, unsigned int num_clips)
|
||||
{
|
||||
|
||||
if (file)
|
||||
return -ENOSYS;
|
||||
|
||||
return drm_atomic_helper_dirtyfb(fb, file, flags, color, clips,
|
||||
num_clips);
|
||||
}
|
||||
|
||||
static const struct drm_framebuffer_funcs amdgpu_fb_funcs = {
|
||||
.destroy = drm_gem_fb_destroy,
|
||||
.create_handle = drm_gem_fb_create_handle,
|
||||
};
|
||||
|
||||
static const struct drm_framebuffer_funcs amdgpu_fb_funcs_atomic = {
|
||||
.destroy = drm_gem_fb_destroy,
|
||||
.create_handle = drm_gem_fb_create_handle,
|
||||
.dirty = amdgpu_dirtyfb
|
||||
};
|
||||
|
||||
uint32_t amdgpu_display_supported_domains(struct amdgpu_device *adev,
|
||||
uint64_t bo_flags)
|
||||
{
|
||||
@ -1100,7 +1120,11 @@ static int amdgpu_display_gem_fb_verify_and_init(struct drm_device *dev,
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
ret = drm_framebuffer_init(dev, &rfb->base, &amdgpu_fb_funcs);
|
||||
if (drm_drv_uses_atomic_modeset(dev))
|
||||
ret = drm_framebuffer_init(dev, &rfb->base,
|
||||
&amdgpu_fb_funcs_atomic);
|
||||
else
|
||||
ret = drm_framebuffer_init(dev, &rfb->base, &amdgpu_fb_funcs);
|
||||
|
||||
if (ret)
|
||||
goto err;
|
||||
|
@ -1269,6 +1269,13 @@ void handle_cursor_update(struct drm_plane *plane,
|
||||
attributes.rotation_angle = 0;
|
||||
attributes.attribute_flags.value = 0;
|
||||
|
||||
/* Enable cursor degamma ROM on DCN3+ for implicit sRGB degamma in DRM
|
||||
* legacy gamma setup.
|
||||
*/
|
||||
if (crtc_state->cm_is_degamma_srgb &&
|
||||
adev->dm.dc->caps.color.dpp.gamma_corr)
|
||||
attributes.attribute_flags.bits.ENABLE_CURSOR_DEGAMMA = 1;
|
||||
|
||||
attributes.pitch = afb->base.pitches[0] / afb->base.format->cpp[0];
|
||||
|
||||
if (crtc_state->stream) {
|
||||
|
@ -1977,12 +1977,12 @@ enum dc_status dc_commit_streams(struct dc *dc,
|
||||
}
|
||||
}
|
||||
|
||||
/* Check for case where we are going from odm 2:1 to max
|
||||
* pipe scenario. For these cases, we will call
|
||||
* commit_minimal_transition_state() to exit out of odm 2:1
|
||||
* first before processing new streams
|
||||
/* ODM Combine 2:1 power optimization is only applied for single stream
|
||||
* scenario, it uses extra pipes than needed to reduce power consumption
|
||||
* We need to switch off this feature to make room for new streams.
|
||||
*/
|
||||
if (stream_count == dc->res_pool->pipe_count) {
|
||||
if (stream_count > dc->current_state->stream_count &&
|
||||
dc->current_state->stream_count == 1) {
|
||||
for (i = 0; i < dc->res_pool->pipe_count; i++) {
|
||||
pipe = &dc->current_state->res_ctx.pipe_ctx[i];
|
||||
if (pipe->next_odm_pipe)
|
||||
@ -3361,6 +3361,45 @@ void dc_dmub_update_dirty_rect(struct dc *dc,
|
||||
}
|
||||
}
|
||||
|
||||
static void wait_for_outstanding_hw_updates(struct dc *dc, const struct dc_state *dc_context)
|
||||
{
|
||||
/*
|
||||
* This function calls HWSS to wait for any potentially double buffered
|
||||
* operations to complete. It should be invoked as a pre-amble prior
|
||||
* to full update programming before asserting any HW locks.
|
||||
*/
|
||||
int pipe_idx;
|
||||
int opp_inst;
|
||||
int opp_count = dc->res_pool->pipe_count;
|
||||
struct hubp *hubp;
|
||||
int mpcc_inst;
|
||||
const struct pipe_ctx *pipe_ctx;
|
||||
|
||||
for (pipe_idx = 0; pipe_idx < dc->res_pool->pipe_count; pipe_idx++) {
|
||||
pipe_ctx = &dc_context->res_ctx.pipe_ctx[pipe_idx];
|
||||
|
||||
if (!pipe_ctx->stream)
|
||||
continue;
|
||||
|
||||
if (pipe_ctx->stream_res.tg->funcs->wait_drr_doublebuffer_pending_clear)
|
||||
pipe_ctx->stream_res.tg->funcs->wait_drr_doublebuffer_pending_clear(pipe_ctx->stream_res.tg);
|
||||
|
||||
hubp = pipe_ctx->plane_res.hubp;
|
||||
if (!hubp)
|
||||
continue;
|
||||
|
||||
mpcc_inst = hubp->inst;
|
||||
// MPCC inst is equal to pipe index in practice
|
||||
for (opp_inst = 0; opp_inst < opp_count; opp_inst++) {
|
||||
if (dc->res_pool->opps[opp_inst]->mpcc_disconnect_pending[mpcc_inst]) {
|
||||
dc->res_pool->mpc->funcs->wait_for_idle(dc->res_pool->mpc, mpcc_inst);
|
||||
dc->res_pool->opps[opp_inst]->mpcc_disconnect_pending[mpcc_inst] = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void commit_planes_for_stream(struct dc *dc,
|
||||
struct dc_surface_update *srf_updates,
|
||||
int surface_count,
|
||||
@ -3378,24 +3417,9 @@ static void commit_planes_for_stream(struct dc *dc,
|
||||
// dc->current_state anymore, so we have to cache it before we apply
|
||||
// the new SubVP context
|
||||
subvp_prev_use = false;
|
||||
|
||||
|
||||
dc_z10_restore(dc);
|
||||
|
||||
if (update_type == UPDATE_TYPE_FULL) {
|
||||
/* wait for all double-buffer activity to clear on all pipes */
|
||||
int pipe_idx;
|
||||
|
||||
for (pipe_idx = 0; pipe_idx < dc->res_pool->pipe_count; pipe_idx++) {
|
||||
struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[pipe_idx];
|
||||
|
||||
if (!pipe_ctx->stream)
|
||||
continue;
|
||||
|
||||
if (pipe_ctx->stream_res.tg->funcs->wait_drr_doublebuffer_pending_clear)
|
||||
pipe_ctx->stream_res.tg->funcs->wait_drr_doublebuffer_pending_clear(pipe_ctx->stream_res.tg);
|
||||
}
|
||||
}
|
||||
if (update_type == UPDATE_TYPE_FULL)
|
||||
wait_for_outstanding_hw_updates(dc, context);
|
||||
|
||||
if (get_seamless_boot_stream_count(context) > 0 && surface_count > 0) {
|
||||
/* Optimize seamless boot flag keeps clocks and watermarks high until
|
||||
|
@ -212,8 +212,9 @@ struct mpcc *mpc1_insert_plane(
|
||||
/* check insert_above_mpcc exist in tree->opp_list */
|
||||
struct mpcc *temp_mpcc = tree->opp_list;
|
||||
|
||||
while (temp_mpcc && temp_mpcc->mpcc_bot != insert_above_mpcc)
|
||||
temp_mpcc = temp_mpcc->mpcc_bot;
|
||||
if (temp_mpcc != insert_above_mpcc)
|
||||
while (temp_mpcc && temp_mpcc->mpcc_bot != insert_above_mpcc)
|
||||
temp_mpcc = temp_mpcc->mpcc_bot;
|
||||
if (temp_mpcc == NULL)
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1515,17 +1515,6 @@ static void dcn20_update_dchubp_dpp(
|
||||
|| plane_state->update_flags.bits.global_alpha_change
|
||||
|| plane_state->update_flags.bits.per_pixel_alpha_change) {
|
||||
// MPCC inst is equal to pipe index in practice
|
||||
int mpcc_inst = hubp->inst;
|
||||
int opp_inst;
|
||||
int opp_count = dc->res_pool->pipe_count;
|
||||
|
||||
for (opp_inst = 0; opp_inst < opp_count; opp_inst++) {
|
||||
if (dc->res_pool->opps[opp_inst]->mpcc_disconnect_pending[mpcc_inst]) {
|
||||
dc->res_pool->mpc->funcs->wait_for_idle(dc->res_pool->mpc, mpcc_inst);
|
||||
dc->res_pool->opps[opp_inst]->mpcc_disconnect_pending[mpcc_inst] = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
hws->funcs.update_mpcc(dc, pipe_ctx);
|
||||
}
|
||||
|
||||
|
@ -338,7 +338,9 @@ static void apply_below_the_range(struct core_freesync *core_freesync,
|
||||
* - Delta for CEIL: delta_from_mid_point_in_us_1
|
||||
* - Delta for FLOOR: delta_from_mid_point_in_us_2
|
||||
*/
|
||||
if ((last_render_time_in_us / mid_point_frames_ceil) < in_out_vrr->min_duration_in_us) {
|
||||
if (mid_point_frames_ceil &&
|
||||
(last_render_time_in_us / mid_point_frames_ceil) <
|
||||
in_out_vrr->min_duration_in_us) {
|
||||
/* Check for out of range.
|
||||
* If using CEIL produces a value that is out of range,
|
||||
* then we are forced to use FLOOR.
|
||||
@ -385,8 +387,9 @@ static void apply_below_the_range(struct core_freesync *core_freesync,
|
||||
/* Either we've calculated the number of frames to insert,
|
||||
* or we need to insert min duration frames
|
||||
*/
|
||||
if (last_render_time_in_us / frames_to_insert <
|
||||
in_out_vrr->min_duration_in_us){
|
||||
if (frames_to_insert &&
|
||||
(last_render_time_in_us / frames_to_insert) <
|
||||
in_out_vrr->min_duration_in_us){
|
||||
frames_to_insert -= (frames_to_insert > 1) ?
|
||||
1 : 0;
|
||||
}
|
||||
|
@ -56,6 +56,7 @@ struct intel_breadcrumbs;
|
||||
|
||||
typedef u32 intel_engine_mask_t;
|
||||
#define ALL_ENGINES ((intel_engine_mask_t)~0ul)
|
||||
#define VIRTUAL_ENGINES BIT(BITS_PER_TYPE(intel_engine_mask_t) - 1)
|
||||
|
||||
struct intel_hw_status_page {
|
||||
struct list_head timelines;
|
||||
|
@ -5121,6 +5121,11 @@ guc_create_virtual(struct intel_engine_cs **siblings, unsigned int count,
|
||||
|
||||
ve->base.flags = I915_ENGINE_IS_VIRTUAL;
|
||||
|
||||
#ifdef notyet
|
||||
BUILD_BUG_ON(ilog2(VIRTUAL_ENGINES) < I915_NUM_ENGINES);
|
||||
#endif
|
||||
ve->base.mask = VIRTUAL_ENGINES;
|
||||
|
||||
intel_context_init(&ve->context, &ve->base);
|
||||
|
||||
for (n = 0; n < count; n++) {
|
||||
|
@ -1179,6 +1179,7 @@ static int is_2MB_gtt_possible(struct intel_vgpu *vgpu,
|
||||
{
|
||||
const struct intel_gvt_gtt_pte_ops *ops = vgpu->gvt->gtt.pte_ops;
|
||||
kvm_pfn_t pfn;
|
||||
int ret;
|
||||
|
||||
if (!HAS_PAGE_SIZES(vgpu->gvt->gt->i915, I915_GTT_PAGE_SIZE_2M))
|
||||
return 0;
|
||||
@ -1188,7 +1189,13 @@ static int is_2MB_gtt_possible(struct intel_vgpu *vgpu,
|
||||
pfn = gfn_to_pfn(vgpu->vfio_device.kvm, ops->get_pfn(entry));
|
||||
if (is_error_noslot_pfn(pfn))
|
||||
return -EINVAL;
|
||||
return PageTransHuge(pfn_to_page(pfn));
|
||||
|
||||
if (!pfn_valid(pfn))
|
||||
return -EINVAL;
|
||||
|
||||
ret = PageTransHuge(pfn_to_page(pfn));
|
||||
kvm_release_pfn_clean(pfn);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int split_2MB_gtt_entry(struct intel_vgpu *vgpu,
|
||||
@ -2880,24 +2887,6 @@ void intel_vgpu_reset_ggtt(struct intel_vgpu *vgpu, bool invalidate_old)
|
||||
ggtt_invalidate(gvt->gt);
|
||||
}
|
||||
|
||||
/**
|
||||
* intel_vgpu_reset_gtt - reset the all GTT related status
|
||||
* @vgpu: a vGPU
|
||||
*
|
||||
* This function is called from vfio core to reset reset all
|
||||
* GTT related status, including GGTT, PPGTT, scratch page.
|
||||
*
|
||||
*/
|
||||
void intel_vgpu_reset_gtt(struct intel_vgpu *vgpu)
|
||||
{
|
||||
/* Shadow pages are only created when there is no page
|
||||
* table tracking data, so remove page tracking data after
|
||||
* removing the shadow pages.
|
||||
*/
|
||||
intel_vgpu_destroy_all_ppgtt_mm(vgpu);
|
||||
intel_vgpu_reset_ggtt(vgpu, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* intel_gvt_restore_ggtt - restore all vGPU's ggtt entries
|
||||
* @gvt: intel gvt device
|
||||
|
@ -224,7 +224,6 @@ void intel_vgpu_reset_ggtt(struct intel_vgpu *vgpu, bool invalidate_old);
|
||||
void intel_vgpu_invalidate_ppgtt(struct intel_vgpu *vgpu);
|
||||
|
||||
int intel_gvt_init_gtt(struct intel_gvt *gvt);
|
||||
void intel_vgpu_reset_gtt(struct intel_vgpu *vgpu);
|
||||
void intel_gvt_clean_gtt(struct intel_gvt *gvt);
|
||||
|
||||
struct intel_vgpu_mm *intel_gvt_find_ppgtt_mm(struct intel_vgpu *vgpu,
|
||||
|
@ -141,9 +141,7 @@ static void i915_fence_release(struct dma_fence *fence)
|
||||
i915_sw_fence_fini(&rq->semaphore);
|
||||
|
||||
/*
|
||||
* Keep one request on each engine for reserved use under mempressure
|
||||
* do not use with virtual engines as this really is only needed for
|
||||
* kernel contexts.
|
||||
* Keep one request on each engine for reserved use under mempressure.
|
||||
*
|
||||
* We do not hold a reference to the engine here and so have to be
|
||||
* very careful in what rq->engine we poke. The virtual engine is
|
||||
@ -173,8 +171,7 @@ static void i915_fence_release(struct dma_fence *fence)
|
||||
* know that if the rq->execution_mask is a single bit, rq->engine
|
||||
* can be a physical engine with the exact corresponding mask.
|
||||
*/
|
||||
if (!intel_engine_is_virtual(rq->engine) &&
|
||||
is_power_of_2(rq->execution_mask) &&
|
||||
if (is_power_of_2(rq->execution_mask) &&
|
||||
!cmpxchg(&rq->engine->request_pool, NULL, rq))
|
||||
return;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: if_aq_pci.c,v 1.23 2023/08/15 08:27:30 miod Exp $ */
|
||||
/* $OpenBSD: if_aq_pci.c,v 1.24 2023/09/19 14:14:35 jsg Exp $ */
|
||||
/* $NetBSD: if_aq.c,v 1.27 2021/06/16 00:21:18 riastradh Exp $ */
|
||||
|
||||
/*
|
||||
@ -2606,7 +2606,7 @@ aq_hw_init_rx_path(struct aq_softc *sc)
|
||||
0, AQ2_RPF_TAG_VLAN_MASK | AQ2_RPF_TAG_UNTAG_MASK,
|
||||
AQ2_ART_ACTION_DROP);
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
for (i = 0; i < 8; i++) {
|
||||
aq2_filter_art_set(sc, AQ2_RPF_INDEX_PCP_TO_TC + i,
|
||||
(i << AQ2_RPF_TAG_PCP_SHIFT), AQ2_RPF_TAG_PCP_MASK,
|
||||
AQ2_ART_ACTION_ASSIGN_TC(i % sc->sc_nqueues));
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: kern_pledge.c,v 1.307 2023/08/20 15:13:43 visa Exp $ */
|
||||
/* $OpenBSD: kern_pledge.c,v 1.308 2023/09/19 10:43:33 claudio Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Nicholas Marriott <nicm@openbsd.org>
|
||||
@ -580,7 +580,7 @@ pledge_fail(struct proc *p, int error, uint64_t code)
|
||||
|
||||
/* Stop threads immediately, because this process is suspect */
|
||||
if (P_HASSIBLING(p))
|
||||
single_thread_set(p, SINGLE_SUSPEND, 1);
|
||||
single_thread_set(p, SINGLE_UNWIND, 1);
|
||||
|
||||
/* Send uncatchable SIGABRT for coredump */
|
||||
sigabort(p);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: kern_proc.c,v 1.94 2023/01/02 23:09:48 guenther Exp $ */
|
||||
/* $OpenBSD: kern_proc.c,v 1.95 2023/09/19 11:35:30 claudio Exp $ */
|
||||
/* $NetBSD: kern_proc.c,v 1.14 1996/02/09 18:59:41 christos Exp $ */
|
||||
|
||||
/*
|
||||
@ -489,18 +489,22 @@ proc_printit(struct proc *p, const char *modif,
|
||||
else
|
||||
pst = pstat[(int)p->p_stat - 1];
|
||||
|
||||
(*pr)("PROC (%s) pid=%d stat=%s\n", p->p_p->ps_comm, p->p_tid, pst);
|
||||
(*pr)("PROC (%s) tid=%d pid=%d tcnt=%d stat=%s\n", p->p_p->ps_comm,
|
||||
p->p_tid, p->p_p->ps_pid, p->p_p->ps_threadcnt, pst);
|
||||
(*pr)(" flags process=%b proc=%b\n",
|
||||
p->p_p->ps_flags, PS_BITS, p->p_flag, P_BITS);
|
||||
(*pr)(" pri=%u, usrpri=%u, nice=%d\n",
|
||||
p->p_runpri, p->p_usrpri, p->p_p->ps_nice);
|
||||
(*pr)(" runpri=%u, usrpri=%u, slppri=%u, nice=%d\n",
|
||||
p->p_runpri, p->p_usrpri, p->p_slppri, p->p_p->ps_nice);
|
||||
(*pr)(" wchan=%p, wmesg=%s, ps_single=%p\n",
|
||||
p->p_wchan, (p->p_wchan && p->p_wmesg) ? p->p_wmesg : "",
|
||||
p->p_p->ps_single);
|
||||
(*pr)(" forw=%p, list=%p,%p\n",
|
||||
TAILQ_NEXT(p, p_runq), p->p_list.le_next, p->p_list.le_prev);
|
||||
(*pr)(" process=%p user=%p, vmspace=%p\n",
|
||||
p->p_p, p->p_addr, p->p_vmspace);
|
||||
(*pr)(" estcpu=%u, cpticks=%d, pctcpu=%u.%u\n",
|
||||
p->p_estcpu, p->p_cpticks, p->p_pctcpu / 100, p->p_pctcpu % 100);
|
||||
(*pr)(" user=%u, sys=%u, intr=%u\n",
|
||||
(*pr)(" estcpu=%u, cpticks=%d, pctcpu=%u.%u, "
|
||||
"user=%u, sys=%u, intr=%u\n",
|
||||
p->p_estcpu, p->p_cpticks, p->p_pctcpu / 100, p->p_pctcpu % 100,
|
||||
p->p_uticks, p->p_sticks, p->p_iticks);
|
||||
}
|
||||
#include <machine/db_machdep.h>
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: kern_sched.c,v 1.91 2023/09/14 22:07:11 cheloha Exp $ */
|
||||
/* $OpenBSD: kern_sched.c,v 1.92 2023/09/19 11:31:51 claudio Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2007, 2008 Artur Grabowski <art@openbsd.org>
|
||||
*
|
||||
@ -268,6 +268,7 @@ setrunqueue(struct cpu_info *ci, struct proc *p, uint8_t prio)
|
||||
|
||||
KASSERT(ci != NULL);
|
||||
SCHED_ASSERT_LOCKED();
|
||||
KASSERT(p->p_wchan == NULL);
|
||||
|
||||
p->p_cpu = ci;
|
||||
p->p_stat = SRUN;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: kern_sig.c,v 1.317 2023/09/13 14:25:49 claudio Exp $ */
|
||||
/* $OpenBSD: kern_sig.c,v 1.318 2023/09/19 10:43:33 claudio Exp $ */
|
||||
/* $NetBSD: kern_sig.c,v 1.54 1996/04/22 01:38:32 christos Exp $ */
|
||||
|
||||
/*
|
||||
@ -1559,7 +1559,7 @@ sigexit(struct proc *p, int signum)
|
||||
|
||||
/* if there are other threads, pause them */
|
||||
if (P_HASSIBLING(p))
|
||||
single_thread_set(p, SINGLE_SUSPEND, 1);
|
||||
single_thread_set(p, SINGLE_UNWIND, 1);
|
||||
|
||||
if (coredump(p) == 0)
|
||||
signum |= WCOREFLAG;
|
||||
@ -2059,10 +2059,10 @@ single_thread_check(struct proc *p, int deep)
|
||||
/*
|
||||
* Stop other threads in the process. The mode controls how and
|
||||
* where the other threads should stop:
|
||||
* - SINGLE_SUSPEND: stop wherever they are, will later either be told to exit
|
||||
* (by setting to SINGLE_EXIT) or be released (via single_thread_clear())
|
||||
* - SINGLE_SUSPEND: stop wherever they are, will later be released (via
|
||||
* single_thread_clear())
|
||||
* - SINGLE_UNWIND: just unwind to kernel boundary, will be told to exit
|
||||
* or released as with SINGLE_SUSPEND
|
||||
* (by setting to SINGLE_EXIT) or released as with SINGLE_SUSPEND
|
||||
* - SINGLE_EXIT: unwind to kernel boundary and exit
|
||||
*/
|
||||
int
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: screen.c,v 1.82 2023/06/26 08:14:19 nicm Exp $ */
|
||||
/* $OpenBSD: screen.c,v 1.83 2023/09/19 08:35:44 nicm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
|
||||
@ -700,9 +700,9 @@ screen_mode_to_string(int mode)
|
||||
if (mode & MODE_CURSOR_VERY_VISIBLE)
|
||||
strlcat(tmp, "CURSOR_VERY_VISIBLE,", sizeof tmp);
|
||||
if (mode & MODE_MOUSE_UTF8)
|
||||
strlcat(tmp, "UTF8,", sizeof tmp);
|
||||
strlcat(tmp, "MOUSE_UTF8,", sizeof tmp);
|
||||
if (mode & MODE_MOUSE_SGR)
|
||||
strlcat(tmp, "SGR,", sizeof tmp);
|
||||
strlcat(tmp, "MOUSE_SGR,", sizeof tmp);
|
||||
if (mode & MODE_BRACKETPASTE)
|
||||
strlcat(tmp, "BRACKETPASTE,", sizeof tmp);
|
||||
if (mode & MODE_FOCUSON)
|
||||
|
Loading…
Reference in New Issue
Block a user