Skip to content

feat(libs): add four sysctl MIB mappings and an IME setter - #8553

Closed
fishingpvalues wants to merge 7 commits into
boykopovar:mainfrom
fishingpvalues:fix/sysctl-mibs-ime-setter
Closed

fishingpvalues wants to merge 7 commits into
boykopovar:mainfrom
fishingpvalues:fix/sysctl-mibs-ime-setter

Conversation

@fishingpvalues

Copy link
Copy Markdown

What

Two small exports that titles actually reach:

  • libkernel: sysctlnametomib now resolves kern.smp.maxcpus, kern.stackprot, kern.sched.name and kern.timecounter.hardware to the MIBs measured on a PS5 (firmware 12.70) payload process: {1, 2147482816, 2147482814}, {1, 2147483151}, {1, 2147483182, 2147483181} and {1, 2147482838, 2147482834}. Payloads that probe these names (e.g. allocator probes) no longer get an exception; sysctl by those exact MIBs still returns -1/ENOENT as measured, and writes throw.
  • libSceIme: sceImeSetConsecutiveClauseConversionEnabled stops throwing and returns 0 for any value. PPSA24191 calls it with 1 before every sceImeOpen and opens the panel only when it returns 0; nothing consumes the flag, so no state is stored.

Tested

macOS (Apple Silicon). Both affected test targets compile in a linux/amd64 container build; running the ctests there fails on unmodified main too because the emulated x86_64 CPU lacks AVX/BMI2 which the guest libs' host-CPU check requires. Verified with a source-level smoke script instead: the four mappings match the measured console MIBs, pre-existing table entries are untouched, the short-buffer/size-query/truncation semantics of sysctlnametomib are unchanged, unknown names still throw, and the IME setter no longer calls NotImplemented_nid_no_patch.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: PPSA24191 (IME setter); the sysctl MIB names are probed by payload processes generally
  • GPUs tested: n/a
  • AI-assisted: yes

@github-actions github-actions Bot added the unblocks title Names a title ID on the Unblocks line label Oct 20, 2026
@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 4630 docs/dev/debt/libkernel.md
PR 5021 docs/dev/debt/libkernel.md
PR 6149 docs/dev/debt/libkernel.md
PR 6740 docs/dev/debt/libkernel.md
PR 6830 docs/dev/debt/libkernel.md
PR 6936 docs/dev/debt/libkernel.md
PR 7088 docs/dev/debt/libkernel.md
PR 7090 docs/dev/debt/libkernel.md
PR 7105 docs/dev/debt/libkernel.md
PR 7121 docs/dev/debt/libkernel.md
PR 7135 docs/dev/debt/libkernel.md
PR 7149 docs/dev/debt/libkernel.md
PR 7192 docs/dev/debt/libkernel.md
PR 7447 docs/dev/debt/libkernel.md
PR 7464 docs/dev/debt/libkernel.md
PR 7509 docs/dev/debt/libkernel.md
PR 7530 docs/dev/debt/libkernel.md
PR 7532 docs/dev/debt/libkernel.md
PR 7565 docs/dev/debt/libkernel.md
PR 7804 docs/dev/debt/libkernel.md
PR 8010 docs/dev/debt/libkernel.md
PR 8497 docs/dev/debt/libkernel.md
PR 8520 docs/dev/debt/libkernel.md
PR 8605 docs/dev/debt/libkernel.md
PR 8725 docs/dev/debt/libkernel.md
PR 8726 docs/dev/debt/libkernel.md
PR 8916 docs/dev/debt/libkernel.md
PR 9095 docs/dev/debt/libkernel.md
PR 9156 docs/dev/debt/libkernel.md
PR 9187 docs/dev/debt/libkernel.md
PR 9199 docs/dev/debt/libkernel.md
PR 9242 docs/dev/debt/libkernel.md
PR 9263 docs/dev/debt/libkernel.md
PR 9284 docs/dev/debt/libkernel.md
PR 9293 docs/dev/debt/libkernel.md
PR 9297 docs/dev/debt/libkernel.md
PR 9302 docs/dev/debt/libkernel.md
PR 9326 docs/dev/debt/libkernel.md
PR 9389 docs/dev/debt/libkernel.md
PR 9442 docs/dev/debt/libkernel.md
PR 9461 docs/dev/debt/libkernel.md
PR 9491 docs/dev/debt/libkernel.md
PR 9499 docs/dev/debt/libkernel.md
PR 9509 docs/dev/debt/libkernel.md
PR 9512 docs/dev/debt/libkernel.md
PR 9515 docs/dev/debt/libkernel.md
PR 9557 docs/dev/debt/libkernel.md
PR 9561 docs/dev/debt/libkernel.md
PR 9566 docs/dev/debt/libkernel.md
PR 9573 docs/dev/debt/libkernel.md
PR 9575 docs/dev/debt/libkernel.md
PR 9578 docs/dev/debt/libkernel.md
PR 9632 docs/dev/debt/libkernel.md
PR 9669 docs/dev/debt/libkernel.md
PR 9682 docs/dev/debt/libkernel.md
PR 9684 docs/dev/debt/libkernel.md
PR 9693 docs/dev/debt/libkernel.md
PR 9732 docs/dev/debt/libkernel.md
PR 9826 core/libs/prx/libSceIme/Export.cpp
PR 9827 core/libs/prx/libSceIme/Export.cpp
PR 9843 docs/dev/debt/libkernel.md
PR 9882 docs/dev/debt/libkernel.md
PR 9938 docs/dev/debt/libkernel.md
PR 9947 docs/dev/debt/libkernel.md
PR 9962 docs/dev/debt/libkernel.md
PR 10025 docs/dev/debt/libkernel.md
PR 10061 docs/dev/debt/libkernel.md
PR 10089 docs/dev/debt/libkernel.md
PR 10105 docs/dev/debt/libkernel.md
PR 10121 docs/dev/debt/libkernel.md
PR 10130 docs/dev/debt/libkernel.md
PR 10132 core/libs/prx/libkernel/System/src/SystemConfiguration.cpp
core/libs/tests/GuestSystemConfiguration.cpp
docs/dev/debt/libkernel.md
PR 10133 docs/dev/debt/libkernel.md
PR 10137 docs/dev/debt/libkernel.md
PR 10162 docs/dev/debt/libkernel.md
PR 10177 docs/dev/debt/libkernel.md
PR 10179 docs/dev/debt/libkernel.md
PR 10192 docs/dev/debt/libkernel.md
PR 10198 docs/dev/debt/libkernel.md
PR 10211 docs/dev/debt/libSceIme.md
PR 10243 docs/dev/debt/libkernel.md
PR 10305 docs/dev/debt/libkernel.md
PR 10310 docs/dev/debt/libkernel.md
PR 10319 docs/dev/debt/libkernel.md
PR 10385 docs/dev/debt/libkernel.md
PR 10442 docs/dev/debt/libkernel.md
PR 10456 docs/dev/debt/libkernel.md
PR 10499 docs/dev/debt/libkernel.md
PR 10501 docs/dev/debt/libkernel.md
PR 10543 docs/dev/debt/libkernel.md
PR 10558 docs/dev/debt/libkernel.md
PR 10621 docs/dev/debt/libkernel.md
PR 10645 docs/dev/debt/libkernel.md
PR 10666 docs/dev/debt/libkernel.md
PR 10671 core/libs/prx/libkernel/System/src/SystemConfiguration.cpp
core/libs/tests/GuestSystemConfiguration.cpp
docs/dev/debt/libkernel.md
PR 10725 docs/dev/debt/libkernel.md
PR 10749 docs/dev/debt/libkernel.md
PR 10767 docs/dev/debt/libkernel.md
PR 10789 docs/dev/debt/libkernel.md
PR 10794 docs/dev/debt/libkernel.md
PR 10809 docs/dev/debt/libkernel.md
PR 10810 docs/dev/debt/libkernel.md
PR 10816 docs/dev/debt/libkernel.md
PR 10817 docs/dev/debt/libkernel.md
PR 10826 docs/dev/debt/libkernel.md
PR 10830 core/libs/prx/libkernel/System/src/SystemConfiguration.cpp
core/libs/tests/GuestSystemConfiguration.cpp
docs/dev/debt/libkernel.md
PR 10848 docs/dev/debt/libkernel.md
PR 10855 docs/dev/debt/libkernel.md
PR 10856 docs/dev/debt/libkernel.md
PR 10898 docs/dev/debt/libkernel.md
PR 10901 docs/dev/debt/libkernel.md
PR 10921 core/libs/prx/libkernel/System/src/SystemConfiguration.cpp
PR 11002 docs/dev/debt/libkernel.md
PR 11005 docs/dev/debt/libkernel.md
PR 11006 docs/dev/debt/libkernel.md
PR 11025 core/libs/prx/libkernel/System/src/SystemConfiguration.cpp
core/libs/tests/GuestSystemConfiguration.cpp
docs/dev/debt/libkernel.md
PR 11029 docs/dev/debt/libkernel.md
PR 11039 docs/dev/debt/libkernel.md
PR 11040 docs/dev/debt/libkernel.md
PR 11042 docs/dev/debt/libkernel.md
PR 11047 docs/dev/debt/libkernel.md
PR 11048 docs/dev/debt/libkernel.md
PR 11078 core/libs/prx/libkernel/System/src/SystemConfiguration.cpp
core/libs/tests/GuestSystemConfiguration.cpp
docs/dev/debt/libkernel.md
PR 11085 docs/dev/debt/libkernel.md
PR 11108 docs/dev/debt/libkernel.md
PR 11116 docs/dev/debt/libkernel.md

@fishingpvalues

Copy link
Copy Markdown
Author

The Build and Progress report runs show "Action required": the author of this PR has no commit or merged PR in the repository yet, so the pull_request-triggered workflows need a collaborator to approve them (Actions tab of the run, or gh workflow run build.yml --repo boykopovar/AnyPS5 --ref main --field pr=8553).

Everything else is green: Conventions, PR labels, PR intake. The pr-overlap note against #6936 is a benign adjacency in docs/dev/debt/libkernel.md (that PR appends a new line after the one this PR updates; the three-way merge is clean and no exports overlap).

@oneandonlydean

Copy link
Copy Markdown
Collaborator

@fishingpvalues Thanks. The four mappings use the MIBs already recorded from the console measurement, and the test table covers them.

One small docs request. With the NotImplemented_nid_no_patch call gone, sceImeSetConsecutiveClauseConversionEnabled is a silent stub: it returns 0 and ignores its argument. CONTRIBUTING.md says a silent stub goes under "Silent stubs" in its library's debt file. Its libSceIme.md entry is still under "Unknown function info". Could you move it under "Silent stubs" (next to sceImeOpen), keeping the text about PPSA24191 and the unknowns? The code needs nothing else.

After that, the bar is a full CI run with guest_system_configuration and guest_ime_parameters passing on Linux and Windows. The Build workflow needs a maintainer to start it for a first-time contributor, and we'll do that.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@fishingpvalues

Copy link
Copy Markdown
Author

Moved sceImeSetConsecutiveClauseConversionEnabled under "Silent stubs" next to sceImeOpen, with the PPSA24191 text and unknowns kept (4dc025b). Thanks for starting the Build run.

@github-actions github-actions Bot added the needs rebase Conflicts with main, rebase needed label Oct 21, 2026
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 24, 2026

@harisibrar1 harisibrar1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked against main b607bfd and FreeBSD 11.4 (sys/kern/kern_sysctl.c, kern_exec.c, subr_smp.c, kern_tc.c, sched_ule.c):

  • The four MIBs match the console values main already records (SystemConfiguration.cpp:115-118 and the libkernel.md entry). FreeBSD 11.4 is consistent with them: all eight nodes are OID_AUTO, and sysctl_register_oid counts OID_AUTO numbers down from 0x7fffffff, which gives values near INT_MAX and children numbered below their parents.
  • sysctlbyname on these names still returns ENOENT through IsUnansweredName, as measured; only the name-to-MIB step changes. The branch merges cleanly.
  • Small description note: since 950a21a, unknown names return -1/ENOENT rather than throwing; the code and debt text are already right.
  • Optional: the test declares the IME setter with bool while Export.cpp uses std::uint8_t; matching them would keep the declarations consistent.

Reviewed with AI assistance (Claude Code); the checks above were run locally on my machine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs libkernel needs rebase Conflicts with main, rebase needed prx unblocks title Names a title ID on the Unblocks line

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants