12.0.0: Difference between revisions
→Kernel: complete 11.x -> 12.x kernel diff |
No edit summary |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
The Switch 12.0.0 system update was released on April 6, 2021 (UTC). This Switch update was released for the following regions: ALL, and CHN. | The Switch 12.0.0 system update was released on April 6, 2021 (UTC). This Switch update was released for the following regions: ALL, and CHN. | ||
Security flaws fixed: | Security flaws fixed: yes. | ||
==Change-log== | ==Change-log== | ||
Line 168: | Line 168: | ||
** KProcess::EnterUserException now sets address_key = (thread | 1) instead of thread. | ** KProcess::EnterUserException now sets address_key = (thread | 1) instead of thread. | ||
*** This makes EnterUserException no longer a kernel waiter. | *** This makes EnterUserException no longer a kernel waiter. | ||
*** KScheduler::UpdateHighestThreads now checks if the top thread is the exception thread, and ignores the pinned thread if it is. | |||
** All locations where KThread::m_num_kernel_waiters is changed now mark that a scheduler update is needed. | ** All locations where KThread::m_num_kernel_waiters is changed now mark that a scheduler update is needed. | ||
* KMemoryBlockManagerUpdater::Initialize has now been removed, rolled into KMemoryBlockManagerUpdater ctor. | * KMemoryBlockManagerUpdater::Initialize has now been removed, rolled into KMemoryBlockManagerUpdater ctor. | ||
Line 224: | Line 225: | ||
====FIRM Sysmodules==== | ====FIRM Sysmodules==== | ||
FIRM sysmodules were updated. Specific diffs available below: | FIRM sysmodules were updated. Specific diffs available below: | ||
=====SM===== | |||
Sysmodule has been completely restructured/refactored/rewritten. | |||
* No longer uses CMIF for IPC, now uses new simpler/learner IPC protocol ("tipc", probably "tiny ipc"). | |||
** TIPC is implemented on top of HIPC svcs, same as CMIF was. | |||
** Hacky/Hardcoded CMIF shim is provided for GetServiceHandle/RegisterClient, to avoid breaking games compiled with SDK < 12.x. | |||
* sm: now has a max sessions of 69, up from 61. | |||
** sm:m is maximum 1, for a total of 70. | |||
* There are now two IPC server threads, each of which processes up to 35 handles. | |||
** The new tipc server class has logic for automatically load-balancing new sessions to the least burdened server thread. | |||
<check back for more diffs later> | <check back for more diffs later> | ||
===[[Bluetooth_Driver_services|bluetooth]]=== | |||
The IPC<>btstack code was rewritten. C++ objects with vfuncs are now used by commands, instead of the interface funcptr tables. Various structs/enums were updated/etc. | |||
The funcs which were called via funcptrs from the HidMessageHandler thread for writing the various EventInfo state are now inlined. | |||
The Adapter commands were updated, which in the process vulns were [[Switch_System_Flaws|fixed]]. | |||
[[Bluetooth_Driver_services#RespondToPinRequest|RespondToPinRequest]] now actually uses the input PIN instead of hard-coding it. | |||
[[Bluetooth_Driver_services#StartInquiry|StartInquiry]] was updated. | |||
System-setting "bluetooth_config!skip_boot" is now [[Bluetooth_Driver_services#IsManufacturingMode|handled]]. | |||
For more details, see [[Bluetooth_Driver_services|here]]. | |||
Support for bluetooth audio was added. Note however, that the audio-sysmodule still doesn't use the btdrv service. | |||
===[[BTM_services|btm]]=== | |||
None of the new btdrv commands are used. [[Bluetooth_Driver_services#StartInquiry|StartInquiry]] with an user-specified service_mask is used, however it's unknown what triggers using this. | |||
=== [[Applet_Manager_services|am]] === | === [[Applet_Manager_services|am]] === |