sync with OpenBSD -current
This commit is contained in:
parent
0189975fb5
commit
cc5edceac3
87 changed files with 1329 additions and 4278 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: pmap.c,v 1.101 2024/01/26 19:23:03 kettenis Exp $ */
|
||||
/* $OpenBSD: pmap.c,v 1.102 2024/03/27 15:40:50 kurt Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008-2009,2014-2016 Dale Rahn <drahn@dalerahn.com>
|
||||
*
|
||||
|
@ -1223,6 +1223,7 @@ pmap_bootstrap(long kvo, paddr_t lpt1, long kernelstart, long kernelend,
|
|||
pmap_kernel()->pm_guarded = ATTR_GP;
|
||||
pmap_kernel()->pm_asid = 0;
|
||||
|
||||
mtx_init(&pmap_tramp.pm_mtx, IPL_VM);
|
||||
pmap_tramp.pm_vp.l1 = (struct pmapvp1 *)va + 1;
|
||||
pmap_tramp.pm_privileged = 1;
|
||||
pmap_tramp.pm_guarded = ATTR_GP;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bcm2711_pcie.c,v 1.12 2024/02/03 10:37:26 kettenis Exp $ */
|
||||
/* $OpenBSD: bcm2711_pcie.c,v 1.13 2024/03/27 15:15:00 patrick Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2020 Mark Kettenis <kettenis@openbsd.org>
|
||||
*
|
||||
|
@ -24,6 +24,7 @@
|
|||
#include <machine/intr.h>
|
||||
#include <machine/bus.h>
|
||||
#include <machine/fdt.h>
|
||||
#include <machine/simplebusvar.h>
|
||||
|
||||
#include <dev/pci/pcidevs.h>
|
||||
#include <dev/pci/pcireg.h>
|
||||
|
@ -57,7 +58,7 @@ struct bcmpcie_range {
|
|||
};
|
||||
|
||||
struct bcmpcie_softc {
|
||||
struct device sc_dev;
|
||||
struct simplebus_softc sc_sbus;
|
||||
bus_space_tag_t sc_iot;
|
||||
bus_space_handle_t sc_ioh;
|
||||
bus_dma_tag_t sc_dmat;
|
||||
|
@ -97,9 +98,11 @@ bcmpcie_match(struct device *parent, void *match, void *aux)
|
|||
{
|
||||
struct fdt_attach_args *faa = aux;
|
||||
|
||||
return OF_is_compatible(faa->fa_node, "brcm,bcm2711-pcie");
|
||||
return OF_is_compatible(faa->fa_node, "brcm,bcm2711-pcie") ||
|
||||
OF_is_compatible(faa->fa_node, "brcm,bcm2712-pcie");
|
||||
}
|
||||
|
||||
int bcmpcie_submatch(struct device *, void *, void *);
|
||||
void bcmpcie_attach_hook(struct device *, struct device *,
|
||||
struct pcibus_attach_args *);
|
||||
int bcmpcie_bus_maxdevs(void *, int);
|
||||
|
@ -272,8 +275,6 @@ bcmpcie_attach(struct device *parent, struct device *self, void *aux)
|
|||
}
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
memcpy(&sc->sc_bus_iot, sc->sc_iot, sizeof(sc->sc_bus_iot));
|
||||
sc->sc_bus_iot.bus_private = sc;
|
||||
sc->sc_bus_iot._space_map = bcmpcie_bs_iomap;
|
||||
|
@ -314,7 +315,22 @@ bcmpcie_attach(struct device *parent, struct device *self, void *aux)
|
|||
pba.pba_domain = pci_ndomains++;
|
||||
pba.pba_bus = 0;
|
||||
|
||||
config_found(self, &pba, NULL);
|
||||
/* Attach device tree nodes enumerating PCIe bus */
|
||||
simplebus_attach(parent, &sc->sc_sbus.sc_dev, faa);
|
||||
|
||||
config_found_sm(self, &pba, NULL, bcmpcie_submatch);
|
||||
}
|
||||
|
||||
int
|
||||
bcmpcie_submatch(struct device *self, void *match, void *aux)
|
||||
{
|
||||
struct cfdata *cf = match;
|
||||
struct pcibus_attach_args *pba = aux;
|
||||
|
||||
if (strcmp(pba->pba_busname, cf->cf_driver->cd_name) != 0)
|
||||
return 0;
|
||||
|
||||
return (*cf->cf_attach->ca_match)(self, match, aux);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: files.fdt,v 1.201 2024/03/02 19:52:41 kettenis Exp $
|
||||
# $OpenBSD: files.fdt,v 1.202 2024/03/27 15:15:00 patrick Exp $
|
||||
#
|
||||
# Config file and device description for machine-independent FDT code.
|
||||
# Included by ports that need it.
|
||||
|
@ -132,7 +132,7 @@ device bcmmbox
|
|||
attach bcmmbox at fdt
|
||||
file dev/fdt/bcm2835_mbox.c bcmmbox
|
||||
|
||||
device bcmpcie: pcibus
|
||||
device bcmpcie: pcibus, fdt
|
||||
attach bcmpcie at fdt
|
||||
file dev/fdt/bcm2711_pcie.c bcmpcie
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: fdt.c,v 1.34 2023/04/26 14:39:42 kettenis Exp $ */
|
||||
/* $OpenBSD: fdt.c,v 1.35 2024/03/27 23:05:27 kettenis Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009 Dariusz Swiderski <sfires@sfires.net>
|
||||
|
@ -501,6 +501,7 @@ fdt_find_node(char *name)
|
|||
while (*p) {
|
||||
void *child;
|
||||
const char *q;
|
||||
const char *s;
|
||||
|
||||
while (*p == '/')
|
||||
p++;
|
||||
|
@ -510,18 +511,33 @@ fdt_find_node(char *name)
|
|||
if (q == NULL)
|
||||
q = p + strlen(p);
|
||||
|
||||
/* Check for a complete match. */
|
||||
for (child = fdt_child_node(node); child;
|
||||
child = fdt_next_node(child)) {
|
||||
if (strncmp(p, fdt_node_name(child), q - p) == 0) {
|
||||
node = child;
|
||||
s = fdt_node_name(child);
|
||||
if (strncmp(p, s, q - p) == 0 && s[q - p] == '\0')
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (child) {
|
||||
node = child;
|
||||
p = q;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (child == NULL)
|
||||
return NULL; /* No match found. */
|
||||
/* Check for a match without the unit name. */
|
||||
for (child = fdt_child_node(node); child;
|
||||
child = fdt_next_node(child)) {
|
||||
s = fdt_node_name(child);
|
||||
if (strncmp(p, s, q - p) == 0 && s[q - p] == '@')
|
||||
break;
|
||||
}
|
||||
if (child) {
|
||||
node = child;
|
||||
p = q;
|
||||
continue;
|
||||
}
|
||||
|
||||
p = q;
|
||||
return NULL; /* No match found. */
|
||||
}
|
||||
|
||||
return node;
|
||||
|
|
|
@ -317,7 +317,7 @@ static uint32_t atom_get_src_int(atom_exec_context *ctx, uint8_t attr,
|
|||
DEBUG("IMM 0x%02X\n", val);
|
||||
return val;
|
||||
}
|
||||
return 0;
|
||||
break;
|
||||
case ATOM_ARG_PLL:
|
||||
idx = U8(*ptr);
|
||||
(*ptr)++;
|
||||
|
|
|
@ -1287,11 +1287,10 @@ static int amdgpu_discovery_reg_base_init(struct amdgpu_device *adev)
|
|||
* 0b10 : encode is disabled
|
||||
* 0b01 : decode is disabled
|
||||
*/
|
||||
adev->vcn.vcn_config[adev->vcn.num_vcn_inst] =
|
||||
ip->revision & 0xc0;
|
||||
ip->revision &= ~0xc0;
|
||||
if (adev->vcn.num_vcn_inst <
|
||||
AMDGPU_MAX_VCN_INSTANCES) {
|
||||
adev->vcn.vcn_config[adev->vcn.num_vcn_inst] =
|
||||
ip->revision & 0xc0;
|
||||
adev->vcn.num_vcn_inst++;
|
||||
adev->vcn.inst_mask |=
|
||||
(1U << ip->instance_number);
|
||||
|
@ -1302,6 +1301,7 @@ static int amdgpu_discovery_reg_base_init(struct amdgpu_device *adev)
|
|||
adev->vcn.num_vcn_inst + 1,
|
||||
AMDGPU_MAX_VCN_INSTANCES);
|
||||
}
|
||||
ip->revision &= ~0xc0;
|
||||
}
|
||||
if (le16_to_cpu(ip->hw_id) == SDMA0_HWID ||
|
||||
le16_to_cpu(ip->hw_id) == SDMA1_HWID ||
|
||||
|
|
|
@ -574,11 +574,34 @@ soc15_asic_reset_method(struct amdgpu_device *adev)
|
|||
return AMD_RESET_METHOD_MODE1;
|
||||
}
|
||||
|
||||
static bool soc15_need_reset_on_resume(struct amdgpu_device *adev)
|
||||
{
|
||||
u32 sol_reg;
|
||||
|
||||
sol_reg = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81);
|
||||
|
||||
/* Will reset for the following suspend abort cases.
|
||||
* 1) Only reset limit on APU side, dGPU hasn't checked yet.
|
||||
* 2) S3 suspend abort and TOS already launched.
|
||||
*/
|
||||
if (adev->flags & AMD_IS_APU && adev->in_s3 &&
|
||||
!adev->suspend_complete &&
|
||||
sol_reg)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int soc15_asic_reset(struct amdgpu_device *adev)
|
||||
{
|
||||
/* original raven doesn't have full asic reset */
|
||||
if ((adev->apu_flags & AMD_APU_IS_RAVEN) ||
|
||||
(adev->apu_flags & AMD_APU_IS_RAVEN2))
|
||||
/* On the latest Raven, the GPU reset can be performed
|
||||
* successfully. So now, temporarily enable it for the
|
||||
* S3 suspend abort case.
|
||||
*/
|
||||
if (((adev->apu_flags & AMD_APU_IS_RAVEN) ||
|
||||
(adev->apu_flags & AMD_APU_IS_RAVEN2)) &&
|
||||
!soc15_need_reset_on_resume(adev))
|
||||
return 0;
|
||||
|
||||
switch (soc15_asic_reset_method(adev)) {
|
||||
|
@ -1296,24 +1319,6 @@ static int soc15_common_suspend(void *handle)
|
|||
return soc15_common_hw_fini(adev);
|
||||
}
|
||||
|
||||
static bool soc15_need_reset_on_resume(struct amdgpu_device *adev)
|
||||
{
|
||||
u32 sol_reg;
|
||||
|
||||
sol_reg = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81);
|
||||
|
||||
/* Will reset for the following suspend abort cases.
|
||||
* 1) Only reset limit on APU side, dGPU hasn't checked yet.
|
||||
* 2) S3 suspend abort and TOS already launched.
|
||||
*/
|
||||
if (adev->flags & AMD_IS_APU && adev->in_s3 &&
|
||||
!adev->suspend_complete &&
|
||||
sol_reg)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int soc15_common_resume(void *handle)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
|
|
|
@ -1906,17 +1906,15 @@ static void amdgpu_dm_fini(struct amdgpu_device *adev)
|
|||
adev->dm.hdcp_workqueue = NULL;
|
||||
}
|
||||
|
||||
if (adev->dm.dc)
|
||||
if (adev->dm.dc) {
|
||||
dc_deinit_callbacks(adev->dm.dc);
|
||||
|
||||
if (adev->dm.dc)
|
||||
dc_dmub_srv_destroy(&adev->dm.dc->ctx->dmub_srv);
|
||||
|
||||
if (dc_enable_dmub_notifications(adev->dm.dc)) {
|
||||
kfree(adev->dm.dmub_notify);
|
||||
adev->dm.dmub_notify = NULL;
|
||||
destroy_workqueue(adev->dm.delayed_hpd_wq);
|
||||
adev->dm.delayed_hpd_wq = NULL;
|
||||
if (dc_enable_dmub_notifications(adev->dm.dc)) {
|
||||
kfree(adev->dm.dmub_notify);
|
||||
adev->dm.dmub_notify = NULL;
|
||||
destroy_workqueue(adev->dm.delayed_hpd_wq);
|
||||
adev->dm.delayed_hpd_wq = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (adev->dm.dmub_bo)
|
||||
|
|
|
@ -1453,7 +1453,7 @@ static ssize_t dp_dsc_clock_en_read(struct file *f, char __user *buf,
|
|||
const uint32_t rd_buf_size = 10;
|
||||
struct pipe_ctx *pipe_ctx;
|
||||
ssize_t result = 0;
|
||||
int i, r, str_len = 30;
|
||||
int i, r, str_len = 10;
|
||||
|
||||
rd_buf = kcalloc(rd_buf_size, sizeof(char), GFP_KERNEL);
|
||||
|
||||
|
|
|
@ -1832,6 +1832,9 @@ bool dcn10_set_output_transfer_func(struct dc *dc, struct pipe_ctx *pipe_ctx,
|
|||
{
|
||||
struct dpp *dpp = pipe_ctx->plane_res.dpp;
|
||||
|
||||
if (!stream)
|
||||
return false;
|
||||
|
||||
if (dpp == NULL)
|
||||
return false;
|
||||
|
||||
|
@ -1854,8 +1857,8 @@ bool dcn10_set_output_transfer_func(struct dc *dc, struct pipe_ctx *pipe_ctx,
|
|||
} else
|
||||
dpp->funcs->dpp_program_regamma_pwl(dpp, NULL, OPP_REGAMMA_BYPASS);
|
||||
|
||||
if (stream != NULL && stream->ctx != NULL &&
|
||||
stream->out_transfer_func != NULL) {
|
||||
if (stream->ctx &&
|
||||
stream->out_transfer_func) {
|
||||
log_tf(stream->ctx,
|
||||
stream->out_transfer_func,
|
||||
dpp->regamma_params.hw_points_num);
|
||||
|
|
|
@ -882,7 +882,8 @@ bool edp_set_replay_allow_active(struct dc_link *link, const bool *allow_active,
|
|||
|
||||
/* Set power optimization flag */
|
||||
if (power_opts && link->replay_settings.replay_power_opt_active != *power_opts) {
|
||||
if (link->replay_settings.replay_feature_enabled && replay->funcs->replay_set_power_opt) {
|
||||
if (replay != NULL && link->replay_settings.replay_feature_enabled &&
|
||||
replay->funcs->replay_set_power_opt) {
|
||||
replay->funcs->replay_set_power_opt(replay, *power_opts, panel_inst);
|
||||
link->replay_settings.replay_power_opt_active = *power_opts;
|
||||
}
|
||||
|
|
|
@ -2358,8 +2358,8 @@ static uint16_t arcturus_get_current_pcie_link_speed(struct smu_context *smu)
|
|||
|
||||
/* TODO: confirm this on real target */
|
||||
esm_ctrl = RREG32_PCIE(smnPCIE_ESM_CTRL);
|
||||
if ((esm_ctrl >> 15) & 0x1FFFF)
|
||||
return (uint16_t)(((esm_ctrl >> 8) & 0x3F) + 128);
|
||||
if ((esm_ctrl >> 15) & 0x1)
|
||||
return (uint16_t)(((esm_ctrl >> 8) & 0x7F) + 128);
|
||||
|
||||
return smu_v11_0_get_current_pcie_link_speed(smu);
|
||||
}
|
||||
|
|
|
@ -1722,8 +1722,8 @@ static int aldebaran_get_current_pcie_link_speed(struct smu_context *smu)
|
|||
|
||||
/* TODO: confirm this on real target */
|
||||
esm_ctrl = RREG32_PCIE(smnPCIE_ESM_CTRL);
|
||||
if ((esm_ctrl >> 15) & 0x1FFFF)
|
||||
return (((esm_ctrl >> 8) & 0x3F) + 128);
|
||||
if ((esm_ctrl >> 15) & 0x1)
|
||||
return (((esm_ctrl >> 8) & 0x7F) + 128);
|
||||
|
||||
return smu_v13_0_get_current_pcie_link_speed(smu);
|
||||
}
|
||||
|
|
|
@ -1943,8 +1943,8 @@ static int smu_v13_0_6_get_current_pcie_link_speed(struct smu_context *smu)
|
|||
|
||||
/* TODO: confirm this on real target */
|
||||
esm_ctrl = RREG32_PCIE(smnPCIE_ESM_CTRL);
|
||||
if ((esm_ctrl >> 15) & 0x1FFFF)
|
||||
return (((esm_ctrl >> 8) & 0x3F) + 128);
|
||||
if ((esm_ctrl >> 15) & 0x1)
|
||||
return (((esm_ctrl >> 8) & 0x7F) + 128);
|
||||
|
||||
speed_level = (RREG32_PCIE(smnPCIE_LC_SPEED_CNTL) &
|
||||
PCIE_LC_SPEED_CNTL__LC_CURRENT_DATA_RATE_MASK)
|
||||
|
|
|
@ -136,7 +136,7 @@ static void huc_delayed_load_timer_callback(void *arg)
|
|||
|
||||
static void huc_delayed_load_start(struct intel_huc *huc)
|
||||
{
|
||||
int delay;
|
||||
ktime_t delay;
|
||||
|
||||
GEM_BUG_ON(intel_huc_is_authenticated(huc, INTEL_HUC_AUTH_BY_GSC));
|
||||
|
||||
|
@ -146,10 +146,10 @@ static void huc_delayed_load_start(struct intel_huc *huc)
|
|||
*/
|
||||
switch (huc->delayed_load.status) {
|
||||
case INTEL_HUC_WAITING_ON_GSC:
|
||||
delay = GSC_INIT_TIMEOUT_MS;
|
||||
delay = ms_to_ktime(GSC_INIT_TIMEOUT_MS);
|
||||
break;
|
||||
case INTEL_HUC_WAITING_ON_PXP:
|
||||
delay = PXP_INIT_TIMEOUT_MS;
|
||||
delay = ms_to_ktime(PXP_INIT_TIMEOUT_MS);
|
||||
break;
|
||||
default:
|
||||
gsc_init_error(huc);
|
||||
|
@ -171,7 +171,7 @@ static void huc_delayed_load_start(struct intel_huc *huc)
|
|||
#ifdef __linux__
|
||||
hrtimer_start(&huc->delayed_load.timer, delay, HRTIMER_MODE_REL);
|
||||
#else
|
||||
timeout_add_msec(&huc->delayed_load.timer, delay);
|
||||
timeout_add_nsec(&huc->delayed_load.timer, ktime_to_ns(delay));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -71,7 +71,6 @@ static inline u32 dfixed_div(fixed20_12 A, fixed20_12 B)
|
|||
}
|
||||
|
||||
#define DRM_FIXED_POINT 32
|
||||
#define DRM_FIXED_POINT_HALF 16
|
||||
#define DRM_FIXED_ONE (1ULL << DRM_FIXED_POINT)
|
||||
#define DRM_FIXED_DECIMAL_MASK (DRM_FIXED_ONE - 1)
|
||||
#define DRM_FIXED_DIGITS_MASK (~DRM_FIXED_DECIMAL_MASK)
|
||||
|
@ -90,12 +89,12 @@ static inline int drm_fixp2int(s64 a)
|
|||
|
||||
static inline int drm_fixp2int_round(s64 a)
|
||||
{
|
||||
return drm_fixp2int(a + (1 << (DRM_FIXED_POINT_HALF - 1)));
|
||||
return drm_fixp2int(a + DRM_FIXED_ONE / 2);
|
||||
}
|
||||
|
||||
static inline int drm_fixp2int_ceil(s64 a)
|
||||
{
|
||||
if (a > 0)
|
||||
if (a >= 0)
|
||||
return drm_fixp2int(a + DRM_FIXED_ALMOST_ONE);
|
||||
else
|
||||
return drm_fixp2int(a - DRM_FIXED_ALMOST_ONE);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ktime.h,v 1.7 2023/01/01 01:34:58 jsg Exp $ */
|
||||
/* $OpenBSD: ktime.h,v 1.8 2024/03/28 02:36:38 jsg Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2013, 2014, 2015 Mark Kettenis
|
||||
*
|
||||
|
@ -150,6 +150,12 @@ ns_to_ktime(uint64_t ns)
|
|||
return ns;
|
||||
}
|
||||
|
||||
static inline ktime_t
|
||||
ms_to_ktime(uint64_t ms)
|
||||
{
|
||||
return ms * NSEC_PER_MSEC;
|
||||
}
|
||||
|
||||
static inline int64_t
|
||||
ktime_divns(ktime_t a, int64_t ns)
|
||||
{
|
||||
|
|
|
@ -813,7 +813,7 @@ int ni_init_microcode(struct radeon_device *rdev)
|
|||
err = 0;
|
||||
} else if (rdev->smc_fw->size != smc_req_size) {
|
||||
pr_err("ni_mc: Bogus length %zu in firmware \"%s\"\n",
|
||||
rdev->mc_fw->size, fw_name);
|
||||
rdev->smc_fw->size, fw_name);
|
||||
err = -EINVAL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* $OpenBSD: init_sysent.c,v 1.275 2024/03/25 17:43:10 mvs Exp $ */
|
||||
/* $OpenBSD: init_sysent.c,v 1.276 2024/03/28 02:23:31 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* System call switch table.
|
||||
*
|
||||
* DO NOT EDIT-- this file is automatically generated.
|
||||
* created from; OpenBSD: syscalls.master,v 1.258 2024/03/25 17:42:34 mvs Exp
|
||||
* created from; OpenBSD: syscalls.master,v 1.259 2024/03/28 02:19:57 deraadt Exp
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
@ -324,8 +324,8 @@ const struct sysent sysent[] = {
|
|||
sys_nosys }, /* 144 = obsolete ogetrlimit */
|
||||
{ 0, 0, 0,
|
||||
sys_nosys }, /* 145 = obsolete osetrlimit */
|
||||
{ 3, s(struct sys_pinsyscall_args), SY_NOLOCK | 0,
|
||||
sys_pinsyscall }, /* 146 = pinsyscall */
|
||||
{ 0, 0, 0,
|
||||
sys_nosys }, /* 146 = obsolete pinsyscall */
|
||||
{ 0, 0, 0,
|
||||
sys_setsid }, /* 147 = setsid */
|
||||
{ 4, s(struct sys_quotactl_args), 0,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: kern_pledge.c,v 1.311 2024/03/22 05:54:25 ratchov Exp $ */
|
||||
/* $OpenBSD: kern_pledge.c,v 1.312 2024/03/28 02:19:57 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2015 Nicholas Marriott <nicm@openbsd.org>
|
||||
|
@ -112,7 +112,6 @@ const uint64_t pledge_syscalls[SYS_MAXSYSCALL] = {
|
|||
[SYS_sendsyslog] = PLEDGE_ALWAYS, /* stack protector reporting */
|
||||
[SYS_thrkill] = PLEDGE_ALWAYS, /* raise, abort, stack pro */
|
||||
[SYS_utrace] = PLEDGE_ALWAYS, /* ltrace(1) from ld.so */
|
||||
[SYS_pinsyscall] = PLEDGE_ALWAYS,
|
||||
[SYS_pinsyscalls] = PLEDGE_ALWAYS,
|
||||
|
||||
/* "getting" information about self is considered safe */
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* $OpenBSD: syscalls.c,v 1.273 2024/03/25 17:43:10 mvs Exp $ */
|
||||
/* $OpenBSD: syscalls.c,v 1.274 2024/03/28 02:23:31 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* System call names.
|
||||
*
|
||||
* DO NOT EDIT-- this file is automatically generated.
|
||||
* created from; OpenBSD: syscalls.master,v 1.258 2024/03/25 17:42:34 mvs Exp
|
||||
* created from; OpenBSD: syscalls.master,v 1.259 2024/03/28 02:19:57 deraadt Exp
|
||||
*/
|
||||
|
||||
const char *const syscallnames[] = {
|
||||
|
@ -166,7 +166,7 @@ const char *const syscallnames[] = {
|
|||
"setthrname", /* 143 = setthrname */
|
||||
"#144 (obsolete ogetrlimit)", /* 144 = obsolete ogetrlimit */
|
||||
"#145 (obsolete osetrlimit)", /* 145 = obsolete osetrlimit */
|
||||
"pinsyscall", /* 146 = pinsyscall */
|
||||
"#146 (obsolete pinsyscall)", /* 146 = obsolete pinsyscall */
|
||||
"setsid", /* 147 = setsid */
|
||||
"quotactl", /* 148 = quotactl */
|
||||
"#149 (obsolete oquota)", /* 149 = obsolete oquota */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $OpenBSD: syscalls.master,v 1.258 2024/03/25 17:42:34 mvs Exp $
|
||||
; $OpenBSD: syscalls.master,v 1.259 2024/03/28 02:19:57 deraadt Exp $
|
||||
; $NetBSD: syscalls.master,v 1.32 1996/04/23 10:24:21 mycroft Exp $
|
||||
|
||||
; @(#)syscalls.master 8.2 (Berkeley) 1/13/94
|
||||
|
@ -282,7 +282,7 @@
|
|||
143 STD { int sys_setthrname(pid_t tid, const char *name); }
|
||||
144 OBSOL ogetrlimit
|
||||
145 OBSOL osetrlimit
|
||||
146 STD NOLOCK { int sys_pinsyscall(int syscall, void *addr, size_t len); }
|
||||
146 OBSOL pinsyscall
|
||||
147 STD { int sys_setsid(void); }
|
||||
148 STD { int sys_quotactl(const char *path, int cmd, \
|
||||
int uid, char *arg); }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uipc_socket.c,v 1.322 2024/03/26 09:46:47 mvs Exp $ */
|
||||
/* $OpenBSD: uipc_socket.c,v 1.323 2024/03/27 22:47:53 mvs Exp $ */
|
||||
/* $NetBSD: uipc_socket.c,v 1.21 1996/02/04 02:17:52 christos Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -161,7 +161,7 @@ soalloc(const struct protosw *prp, int wait)
|
|||
}
|
||||
break;
|
||||
case AF_UNIX:
|
||||
so->so_rcv.sb_flags |= SB_MTXLOCK;
|
||||
so->so_rcv.sb_flags |= SB_MTXLOCK | SB_OWNLOCK;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -903,12 +903,23 @@ restart:
|
|||
}
|
||||
SBLASTRECORDCHK(&so->so_rcv, "soreceive sbwait 1");
|
||||
SBLASTMBUFCHK(&so->so_rcv, "soreceive sbwait 1");
|
||||
sb_mtx_unlock(&so->so_rcv);
|
||||
sbunlock(so, &so->so_rcv);
|
||||
error = sbwait(so, &so->so_rcv);
|
||||
if (error) {
|
||||
|
||||
if (so->so_rcv.sb_flags & SB_OWNLOCK) {
|
||||
sbunlock_locked(so, &so->so_rcv);
|
||||
sounlock_shared(so);
|
||||
return (error);
|
||||
error = sbwait_locked(so, &so->so_rcv);
|
||||
sb_mtx_unlock(&so->so_rcv);
|
||||
if (error)
|
||||
return (error);
|
||||
solock_shared(so);
|
||||
} else {
|
||||
sb_mtx_unlock(&so->so_rcv);
|
||||
sbunlock(so, &so->so_rcv);
|
||||
error = sbwait(so, &so->so_rcv);
|
||||
if (error) {
|
||||
sounlock_shared(so);
|
||||
return (error);
|
||||
}
|
||||
}
|
||||
goto restart;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uipc_socket2.c,v 1.145 2024/03/26 09:46:47 mvs Exp $ */
|
||||
/* $OpenBSD: uipc_socket2.c,v 1.146 2024/03/27 22:47:53 mvs Exp $ */
|
||||
/* $NetBSD: uipc_socket2.c,v 1.11 1996/02/04 02:17:55 christos Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -522,6 +522,18 @@ sbmtxassertlocked(struct socket *so, struct sockbuf *sb)
|
|||
/*
|
||||
* Wait for data to arrive at/drain from a socket buffer.
|
||||
*/
|
||||
int
|
||||
sbwait_locked(struct socket *so, struct sockbuf *sb)
|
||||
{
|
||||
int prio = (sb->sb_flags & SB_NOINTR) ? PSOCK : PSOCK | PCATCH;
|
||||
|
||||
MUTEX_ASSERT_LOCKED(&sb->sb_mtx);
|
||||
|
||||
sb->sb_flags |= SB_WAIT;
|
||||
return msleep_nsec(&sb->sb_cc, &sb->sb_mtx, prio, "sbwait",
|
||||
sb->sb_timeo_nsecs);
|
||||
}
|
||||
|
||||
int
|
||||
sbwait(struct socket *so, struct sockbuf *sb)
|
||||
{
|
||||
|
@ -573,20 +585,23 @@ out:
|
|||
}
|
||||
|
||||
void
|
||||
sbunlock(struct socket *so, struct sockbuf *sb)
|
||||
sbunlock_locked(struct socket *so, struct sockbuf *sb)
|
||||
{
|
||||
int dowakeup = 0;
|
||||
MUTEX_ASSERT_LOCKED(&sb->sb_mtx);
|
||||
|
||||
mtx_enter(&sb->sb_mtx);
|
||||
sb->sb_flags &= ~SB_LOCK;
|
||||
if (sb->sb_flags & SB_WANT) {
|
||||
sb->sb_flags &= ~SB_WANT;
|
||||
dowakeup = 1;
|
||||
}
|
||||
mtx_leave(&sb->sb_mtx);
|
||||
|
||||
if (dowakeup)
|
||||
wakeup(&sb->sb_flags);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
sbunlock(struct socket *so, struct sockbuf *sb)
|
||||
{
|
||||
mtx_enter(&sb->sb_mtx);
|
||||
sbunlock_locked(so, sb);
|
||||
mtx_leave(&sb->sb_mtx);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -100,7 +100,7 @@ struct inflate_state {
|
|||
unsigned char FAR *window; /* allocated sliding window, if needed */
|
||||
/* bit accumulator */
|
||||
unsigned long hold; /* input bit accumulator */
|
||||
unsigned bits; /* number of bits in "in" */
|
||||
unsigned bits; /* number of bits in hold */
|
||||
/* for string and stored block copying */
|
||||
unsigned length; /* literal or length of data to copy */
|
||||
unsigned offset; /* distance back to copy string from */
|
||||
|
|
|
@ -513,6 +513,8 @@ typedef uLong FAR uLongf;
|
|||
|
||||
#if !defined(_WIN32) && defined(Z_LARGE64)
|
||||
# define z_off64_t off64_t
|
||||
#elif defined(__MINGW32__)
|
||||
# define z_off64_t long long
|
||||
#elif defined(_WIN32) && !defined(__GNUC__)
|
||||
# define z_off64_t __int64
|
||||
#elif defined(__GO32__)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: socketvar.h,v 1.126 2024/03/26 09:46:47 mvs Exp $ */
|
||||
/* $OpenBSD: socketvar.h,v 1.127 2024/03/27 22:47:53 mvs Exp $ */
|
||||
/* $NetBSD: socketvar.h,v 1.18 1996/02/09 18:25:38 christos Exp $ */
|
||||
|
||||
/*-
|
||||
|
@ -127,14 +127,15 @@ struct socket {
|
|||
uint64_t sb_timeo_nsecs;/* timeout for read/write */
|
||||
struct klist sb_klist; /* process selecting read/write */
|
||||
} so_rcv, so_snd;
|
||||
#define SB_MAX (2*1024*1024) /* default for max chars in sockbuf */
|
||||
#define SB_LOCK 0x01 /* lock on data queue */
|
||||
#define SB_WANT 0x02 /* someone is waiting to lock */
|
||||
#define SB_WAIT 0x04 /* someone is waiting for data/space */
|
||||
#define SB_ASYNC 0x10 /* ASYNC I/O, need signals */
|
||||
#define SB_SPLICE 0x20 /* buffer is splice source or drain */
|
||||
#define SB_NOINTR 0x40 /* operations not interruptible */
|
||||
#define SB_MTXLOCK 0x80 /* use sb_mtx for sockbuf protection */
|
||||
#define SB_MAX (2*1024*1024) /* default for max chars in sockbuf */
|
||||
#define SB_LOCK 0x0001 /* lock on data queue */
|
||||
#define SB_WANT 0x0002 /* someone is waiting to lock */
|
||||
#define SB_WAIT 0x0004 /* someone is waiting for data/space */
|
||||
#define SB_ASYNC 0x0010 /* ASYNC I/O, need signals */
|
||||
#define SB_SPLICE 0x0020 /* buffer is splice source or drain */
|
||||
#define SB_NOINTR 0x0040 /* operations not interruptible */
|
||||
#define SB_MTXLOCK 0x0080 /* use sb_mtx for sockbuf protection */
|
||||
#define SB_OWNLOCK 0x0100 /* sb_mtx used standalone */
|
||||
|
||||
void (*so_upcall)(struct socket *so, caddr_t arg, int waitf);
|
||||
caddr_t so_upcallarg; /* Arg for above */
|
||||
|
@ -320,6 +321,7 @@ int sblock(struct socket *, struct sockbuf *, int);
|
|||
|
||||
/* release lock on sockbuf sb */
|
||||
void sbunlock(struct socket *, struct sockbuf *);
|
||||
void sbunlock_locked(struct socket *, struct sockbuf *);
|
||||
|
||||
#define SB_EMPTY_FIXUP(sb) do { \
|
||||
if ((sb)->sb_mb == NULL) { \
|
||||
|
@ -367,6 +369,7 @@ int sbcheckreserve(u_long, u_long);
|
|||
int sbchecklowmem(void);
|
||||
int sbreserve(struct socket *, struct sockbuf *, u_long);
|
||||
int sbwait(struct socket *, struct sockbuf *);
|
||||
int sbwait_locked(struct socket *, struct sockbuf *);
|
||||
void soinit(void);
|
||||
void soabort(struct socket *);
|
||||
int soaccept(struct socket *, struct mbuf *);
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* $OpenBSD: syscall.h,v 1.272 2024/03/25 17:43:10 mvs Exp $ */
|
||||
/* $OpenBSD: syscall.h,v 1.273 2024/03/28 02:27:14 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* System call numbers.
|
||||
*
|
||||
* DO NOT EDIT-- this file is automatically generated.
|
||||
* created from; OpenBSD: syscalls.master,v 1.258 2024/03/25 17:42:34 mvs Exp
|
||||
* created from; OpenBSD: syscalls.master,v 1.259 2024/03/28 02:19:57 deraadt Exp
|
||||
*/
|
||||
|
||||
/* syscall: "exit" ret: "void" args: "int" */
|
||||
|
@ -425,9 +425,7 @@
|
|||
|
||||
/* 144 is obsolete ogetrlimit */
|
||||
/* 145 is obsolete osetrlimit */
|
||||
/* syscall: "pinsyscall" ret: "int" args: "int" "void *" "size_t" */
|
||||
#define SYS_pinsyscall 146
|
||||
|
||||
/* 146 is obsolete pinsyscall */
|
||||
/* syscall: "setsid" ret: "int" args: */
|
||||
#define SYS_setsid 147
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/* $OpenBSD: syscallargs.h,v 1.275 2024/03/25 17:43:10 mvs Exp $ */
|
||||
/* $OpenBSD: syscallargs.h,v 1.276 2024/03/28 02:27:14 deraadt Exp $ */
|
||||
|
||||
/*
|
||||
* System call argument lists.
|
||||
*
|
||||
* DO NOT EDIT-- this file is automatically generated.
|
||||
* created from; OpenBSD: syscalls.master,v 1.258 2024/03/25 17:42:34 mvs Exp
|
||||
* created from; OpenBSD: syscalls.master,v 1.259 2024/03/28 02:19:57 deraadt Exp
|
||||
*/
|
||||
|
||||
#ifdef syscallarg
|
||||
|
@ -728,12 +728,6 @@ struct sys_setthrname_args {
|
|||
syscallarg(const char *) name;
|
||||
};
|
||||
|
||||
struct sys_pinsyscall_args {
|
||||
syscallarg(int) syscall;
|
||||
syscallarg(void *) addr;
|
||||
syscallarg(size_t) len;
|
||||
};
|
||||
|
||||
struct sys_quotactl_args {
|
||||
syscallarg(const char *) path;
|
||||
syscallarg(int) cmd;
|
||||
|
@ -1309,7 +1303,6 @@ int sys_adjtime(struct proc *, void *, register_t *);
|
|||
int sys_getlogin_r(struct proc *, void *, register_t *);
|
||||
int sys_getthrname(struct proc *, void *, register_t *);
|
||||
int sys_setthrname(struct proc *, void *, register_t *);
|
||||
int sys_pinsyscall(struct proc *, void *, register_t *);
|
||||
int sys_setsid(struct proc *, void *, register_t *);
|
||||
int sys_quotactl(struct proc *, void *, register_t *);
|
||||
int sys_ypconnect(struct proc *, void *, register_t *);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uvm_km.c,v 1.151 2022/08/01 14:15:46 mpi Exp $ */
|
||||
/* $OpenBSD: uvm_km.c,v 1.152 2024/03/27 15:41:40 kurt Exp $ */
|
||||
/* $NetBSD: uvm_km.c,v 1.42 2001/01/14 02:10:01 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -183,6 +183,11 @@ uvm_km_init(vaddr_t base, vaddr_t start, vaddr_t end)
|
|||
panic("uvm_km_init: could not reserve space for kernel");
|
||||
|
||||
kernel_map = &kernel_map_store;
|
||||
|
||||
#ifndef __HAVE_PMAP_DIRECT
|
||||
/* allow km_alloc calls before uvm_km_thread starts */
|
||||
mtx_init(&uvm_km_pages.mtx, IPL_VM);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -558,7 +563,6 @@ uvm_km_page_init(void)
|
|||
int len, bulk;
|
||||
vaddr_t addr;
|
||||
|
||||
mtx_init(&uvm_km_pages.mtx, IPL_VM);
|
||||
if (!uvm_km_pages.lowat) {
|
||||
/* based on physmem, calculate a good value here */
|
||||
uvm_km_pages.lowat = physmem / 256;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uvm_mmap.c,v 1.185 2024/01/19 21:20:35 deraadt Exp $ */
|
||||
/* $OpenBSD: uvm_mmap.c,v 1.186 2024/03/28 02:19:57 deraadt Exp $ */
|
||||
/* $NetBSD: uvm_mmap.c,v 1.49 2001/02/18 21:19:08 chs Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -612,15 +612,6 @@ sys_msyscall(struct proc *p, void *v, register_t *retval)
|
|||
return uvm_map_syscall(&p->p_vmspace->vm_map, addr, addr+size);
|
||||
}
|
||||
|
||||
/*
|
||||
* sys_pinsyscall
|
||||
*/
|
||||
int
|
||||
sys_pinsyscall(struct proc *p, void *v, register_t *retval)
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* sys_pinsyscalls. The caller is required to normalize base,len
|
||||
* to the minimum .text region, and adjust pintable offsets relative
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue