Created Firmware 19.0.0 (markdown)

Zoria
2025-05-31 22:04:00 +02:00
parent deb4806d1a
commit 955ac145c2

599
Firmware-19.0.0.md Normal file

@ -0,0 +1,599 @@
# System Titles
The following titles were updated:
Sysmodules: usb, htc.stub, boot2.ProdBoot, settings, Bus, bluetooth, bcat, friends, nifm, ptm, bsdsocket, hid, audio, LogManager.Prod, wlan, ldn, nvservices, pcv, capmtp, nvnflinger, pcie, account, ns, nfc, psc, capsrv, am, ssl, nim, btm, erpt, vi, pctl, npns, eupld, glue, eclct, es, fatal, creport, ro, sdb, grc, migration, jpegdec, safemode, olsc, ngct, jit, pgl, omm, eth, ngc.
SystemData (non-sysver): CertStore, ErrorMessage, MiiModel, BrowserDll, Help, NgWord, SsidList, TimeZoneBinary, FontNintendoExtension, FontStandard, FontKorean, FontChineseTraditional, FontChineseSimple, FirmwareDebugSettings, BootImagePackage, BootImagePackageSafe, BootImagePackageExFat, FatalMessage, PlatformConfigIcosa, PlatformConfigCopper, PlatformConfigHoag, ControllerFirmware, NgWord2, BootImagePackageExFatSafe, PlatformConfigIcosaMariko, ContentActionTable, NgWordT, PlatformConfigAula, AulaDockFirmware.
Applets: qlaunch, auth, netConnect, LibAppletWeb, LibAppletShop, LibAppletOff, LibAppletLns, LibAppletAuth, "starter" application.
[NPDM](https://switchbrew.org/wiki/NPDM) changes (besides usual version-bump):
usb: Service access: removed set:fd.
htc.stub: SVC access: removed SetHeapSize, MapMemory, UnmapMemory, ExitProcess, CreateThread, StartThread, ExitThread, SleepThread, SetThreadPriority, GetThreadCoreMask, SetThreadCoreMask, GetCurrentProcessorNumber, SignalEvent, MapSharedMemory, UnmapSharedMemory, CreateTransferMemory, CloseHandle, ResetSignal, CancelSynchronization, ArbitrateLock, ArbitrateUnlock, WaitProcessWideKeyAtomic, SignalProcessWideKey, GetSystemTick, SendSyncRequestLight, SendSyncRequestWithUserBuffer, SendAsyncRequestWithUserBuffer, GetProcessId, Break, OutputDebugString, ReturnFromException, WaitForAddress, SignalToAddress.
bluetooth: Service access: removed set:fd.
bcat: Service access: added ssl:s, removed ssl.
friends: Service access: added ssl:s, removed set, ssl. SVC access: removed MapTransferMemory, UnmapTransferMemory.
nifm: Service access: added ssl:s, removed ssl.
ptm: Service access: removed set:fd. KernelCap HandleTableSize: removed HandleTableSize=0x100.
bsdsocket: Service server access: removed bsdcfg.
hid: Service access: removed set:fd.
audio: Service access: removed set, set:cal.
wlan: Service access: removed i2c.
pcv: Service access: removed set:fd.
account: Service access: added ssl:s, removed ssl.
ns: Service access: added caps:dc.
nfc: Service access: removed xcd:sys.
capsrv: Service access: added acc:e:u1.
erpt: Service access: added srepo:a, removed srepo:u.
pctl: Service access: added ssl:s, removed ssl.
npns: Service access: added ssl:s, removed ssl. SVC access: added MapTransferMemory, UnmapTransferMemory.
eupld: Service access: added ssl:s, removed ssl.
creport: SVC access: removed GetThreadList.
migration: Service access: added hid, set, ssl:s, removed bsdcfg, ssl.
olsc: Service access: added ssl:s, removed ssl.
omm: Service access: removed irs:sys.
qlaunch: Service access: added bsd:a, removed bsd:u.
auth: Service access: added bsd:a, removed bsd:u.
netConnect: Service access: added bsd:a, removed bsd:u.
LibAppletWeb: Service access: added bsd:a, removed bsd:u.
LibAppletShop: Service access: added bsd:a, removed bsd:u.
LibAppletOff: Service access: added bsd:a, removed bsd:u.
LibAppletLns: Service access: added bsd:a, removed bsd:u.
LibAppletAuth: Service access: added bsd:a, removed bsd:u.
RomFs changes:
[CertStore](https://switchbrew.org/wiki/SSL_services#CertStore): "/ssl_TrustedCerts.Ounce.bdf" updated
ErrorMessage: updated
BrowserDll: "/buildinfo/buildinfo.dat" updated, "/nro/netfront/core_2/default/cfi_enabled/cairo_wkc.nro.lz4" updated, "/nro/netfront/core_2/default/cfi_enabled/libfont.nro.lz4" updated, "/nro/netfront/core_2/default/cfi_enabled/oss_wkc.nro.lz4" updated, "/nro/netfront/core_2/default/cfi_enabled/peer_wkc.nro.lz4" updated, "/nro/netfront/core_2/default/cfi_enabled/webkit_wkc.nro.lz4" updated
Help: "/legallines.htdocs/index.html" updated
NgWord: updated
[SystemVersion](https://switchbrew.org/wiki/System_Version_Title): All files updated.
TimeZoneBinary: updated
[FirmwareDebugSettings](https://switchbrew.org/wiki/System_Settings): All files updated.
NgWord2: updated
RebootlessSystemUpdateVersion: All files updated.
NgWordT: All files updated.
qlaunch applet:
"/lyt/": Various data updated.
"/message/": Various data updated.
auth applet:
"/lyt/": Various data updated.
"/message/": Various data updated.
netConnect applet:
"/lyt/": Various data updated.
"/message/": Various data updated.
[LibAppletWeb/LibAppletShop/LibAppletOff/LibAppletLns/LibAppletAuth](https://switchbrew.org/wiki/Internet_Browser): All files updated.
"starter" application:
"/lyt/": Various data updated.
"/message/": Various data updated.
The SDK library version strings were removed from all titles. The "SDK MW+Nintendo+{...}" strings are no longer present. The used libraries/versions can therefore no longer be determined via checking these strings (unless there's other version-strings).
# IPC Interface Changes
Interface Changed: nn::sasbus::ISession
Added: 4 - inbytes: 0x10, inhandles: [1], outbytes: 0x0
Added: 5 - inbytes: 0x0, outbytes: 0x0
Interface Removed: nn::news::detail::ipc::INewlyArrivedEventHolder
Interface Removed: nn::news::detail::ipc::INewsDatabaseService
Interface Added: nn::news::detail::ipc::IDeviceNewsDatabaseService
Interface Added: nn::news::detail::ipc::INewArrivalEventHolder
Interface Changed: nn::news::detail::ipc::INewsDataService
Added: 1100 - inbytes: 0x18, outbytes: 0x0
Interface Changed: nn::news::detail::ipc::INewsService
Removed: 30400 - buffers: [0x6, 0x5], inbytes: 0x0, outbytes: 0x8
Interface Changed: nn::news::detail::ipc::IServiceCreator
Changed: 1 - outinterfaces: ['nn::news::detail::ipc::INewlyArrivedEventHolder'] -> ['nn::news::detail::ipc::INewArrivalEventHolder'] (final state: inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::news::detail::ipc::INewArrivalEventHolder'])
Changed: 3 - outinterfaces: ['nn::news::detail::ipc::INewsDatabaseService'] -> ['nn::news::detail::ipc::IDeviceNewsDatabaseService'] (final state: inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::news::detail::ipc::IDeviceNewsDatabaseService'])
Unknown Interface prev-version: 0x710007CD3C
Unknown Interface cur-version: 0x71000844C0
Interface Changed: nn::friends::detail::ipc::IFriendService
Added: 20105 - buffer_entry_sizes: [0x200], buffers: [0x6], inbytes: 0x28, outbytes: 0x4
Added: 20106 - buffer_entry_sizes: [0x200, 0x8], buffers: [0x6, 0x9], inbytes: 0x10, outbytes: 0x0
Added: 20502 - buffer_entry_sizes: [0x4A8, 0x8], buffers: [0x6, 0x9], inbytes: 0x10, outbytes: 0x0
Added: 20601 - buffer_entry_sizes: [0xE8], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0
Added: 20702 - buffer_entry_sizes: [0x100], buffers: [0x6], inbytes: 0x18, outbytes: 0x4
Added: 20802 - buffer_entry_sizes: [0x800], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0
Added: 22002 - buffer_entry_sizes: [0x500], buffers: [0x6], inbytes: 0x10, outbytes: 0x4
Added: 22003 - buffer_entry_sizes: [0x1400], buffers: [0x16], inbytes: 0x18, outbytes: 0x0
Added: 30501 - buffer_entry_sizes: [0x4A8], buffers: [0x1A], inbytes: 0x30, outbytes: 0x0
Added: 30701 - buffer_entry_sizes: [0x40, 0x48, 0x48], buffers: [0x19, 0x19, 0x19], inbytes: 0x28, outbytes: 0x0
Added: 30901 - buffer_entry_sizes: [0xC00, 0x8, 0x0], buffers: [0x15, 0x9, 0x5], inbytes: 0x30, outbytes: 0x0
Added: 31000 - inbytes: 0x28, outbytes: 0x0, outinterfaces: ['nn::friends::detail::ipc::INotificationService']
Interface Changed: nn::friends::detail::ipc::IServiceCreator
Changed: 2 - outinterfaces: ['0x710007CD3C'] -> ['0x71000844C0'] (final state: inbytes: 0x0, outbytes: 0x0, outinterfaces: ['0x71000844C0'])
Interface Removed: nn::fgm::sf::IRequest
Interface Removed: nn::fgm::sf::ISession
Interface Added: nn::fgm::IRequest
Interface Added: nn::fgm::ISession
Interface Changed: nn::psm::IPsmServer
Added: 21 - inbytes: 0x0, outbytes: 0x4
Added: 22 - inbytes: 0x0, outbytes: 0x1
Added: 23 - inbytes: 0x1, outbytes: 0x0
Interface Changed: nn::bsdsocket::cfg::ServerInterface
Added: 24 - buffers: [0x5], inbytes: 0x10, outbytes: 0x0, pid: True
Interface Changed: nn::hid::IHidDebugServer
Added: 212 - buffer_entry_sizes: [0x10], buffers: [0x6], inbytes: 0x8, outbytes: 0x4
Added: 253 - inbytes: 0x8, outbytes: 0x0
Removed: 351 - inbytes: 0x0, outbytes: 0x4
Removed: 352 - inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::hid::IHidServer
Added: 22 - inbytes: 0x4, outbytes: 0x0
Interface Changed: nn::hid::IHidSystemServer
Removed: 214 - inbytes: 0x10, outbytes: 0x8
Added: 216 - inbytes: 0x10, outbytes: 0x8
Added: 217 - inbytes: 0x8, outbytes: 0x0, outhandles: [1, 1]
Added: 218 - buffer_entry_sizes: [0x804], buffers: [0x32], inbytes: 0x8, outbytes: 0x0
Added: 219 - inbytes: 0x10, outbytes: 0x0
Added: 220 - inbytes: 0x8, outbytes: 0x0
Added: 221 - inbytes: 0x30, outbytes: 0x0
Added: 222 - buffer_entry_sizes: [0x3F4], buffers: [0x31], inbytes: 0x8, outbytes: 0x0
Added: 223 - buffer_entry_sizes: [0x218], buffers: [0x31], inbytes: 0x8, outbytes: 0x0
Added: 224 - buffer_entry_sizes: [0x64], buffers: [0x31], inbytes: 0x8, outbytes: 0x0
Added: 225 - inbytes: 0x10, outbytes: 0x0
Added: 226 - buffer_entry_sizes: [0x118], buffers: [0x31], inbytes: 0x8, outbytes: 0x0
Added: 227 - buffer_entry_sizes: [0x218], buffers: [0x31], inbytes: 0x8, outbytes: 0x0
Added: 234 - inbytes: 0x8, outbytes: 0x8
Added: 241 - inbytes: 0x8, outbytes: 0x1
Added: 242 - inbytes: 0x10, outbytes: 0x0
Added: 243 - inbytes: 0x8, outbytes: 0x1
Added: 244 - inbytes: 0x10, outbytes: 0x0
Added: 245 - inbytes: 0x8, outbytes: 0x20
Added: 246 - inbytes: 0x8, outbytes: 0x0
Added: 247 - inbytes: 0x10, outbytes: 0x0
Added: 332 - inbytes: 0x8, outbytes: 0x4
Added: 526 - inbytes: 0x0, outbytes: 0x1
Removed: 543 - buffer_entry_sizes: [0x30], buffers: [0xA], inbytes: 0x0, outbytes: 0x8
Added: 1420 - inbytes: 0x8, outbytes: 0xC
Interface Changed: nn::xcd::detail::ISystemServer
Removed: 0 - inbytes: 0x8, outbytes: 0x1
Removed: 1 - inbytes: 0xC, outbytes: 0x0
Removed: 2 - inbytes: 0x8, outbytes: 0x1
Removed: 3 - inbytes: 0xC, outbytes: 0x0
Removed: 4 - inbytes: 0x8, outbytes: 0x20
Removed: 5 - inbytes: 0x8, outbytes: 0x0
Removed: 6 - inbytes: 0xC, outbytes: 0x0
Removed: 10 - inbytes: 0x8, outbytes: 0x0, outhandles: [1, 1]
Removed: 11 - buffer_entry_sizes: [0x804], buffers: [0x32], inbytes: 0x8, outbytes: 0x0
Removed: 12 - inbytes: 0x10, outbytes: 0x0
Removed: 13 - inbytes: 0x8, outbytes: 0x0
Removed: 14 - inbytes: 0x30, outbytes: 0x0
Removed: 15 - buffer_entry_sizes: [0x3F4], buffers: [0x19], inbytes: 0x8, outbytes: 0x0
Removed: 16 - buffer_entry_sizes: [0x218], buffers: [0x19], inbytes: 0x8, outbytes: 0x0
Removed: 17 - buffer_entry_sizes: [0x64], buffers: [0x19], inbytes: 0x8, outbytes: 0x0
Removed: 18 - inbytes: 0xC, outbytes: 0x0
Removed: 19 - buffer_entry_sizes: [0x118], buffers: [0x19], inbytes: 0x8, outbytes: 0x0
Removed: 20 - buffer_entry_sizes: [0x218], buffers: [0x19], inbytes: 0x8, outbytes: 0x0
Interface Changed: nn::audioctrl::detail::IAudioController
Added: 5000 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::audioctrl::detail::IAudioController']
Removed: 50000 - inbytes: 0x4, outbytes: 0x0
Added: 50001 - inbytes: 0x4, outbytes: 0x0
Added: 50003 - buffers: [0x9], inbytes: 0x0, outbytes: 0x0
Added: 50004 - inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::wlan::detail::IPrivateWirelessCommunicationService
Changed: 2 - buffer_entry_sizes: [0x1F8] -> [0x9A] (final state: buffer_entry_sizes: [0x9A], buffers: [0x19], inbytes: 0x4, outbytes: 0x0)
Changed: 12 - buffer_entry_sizes: [0x84] -> [0x80] (final state: buffer_entry_sizes: [0x80], buffers: [0x19], inbytes: 0x0, outbytes: 0x32)
Interface Changed: nn::wlan::detail::IWirelessCommunicationService
Changed: 60 - buffer_entry_sizes: [0x1F8] -> [0x9A] (final state: buffer_entry_sizes: [0x9A], buffers: [0x19], inbytes: 0x0, outbytes: 0x0)
Changed: 90 - buffer_entry_sizes: [0x84] -> [0x80] (final state: buffer_entry_sizes: [0x80], buffers: [0x19], inbytes: 0x0, outbytes: 0x32)
Changed: 100 - inbytes: 0x80 -> 0x7C (final state: inbytes: 0x7C, outbytes: 0x0)
Added: 109 - inbytes: 0x8, outbytes: 0x0
Added: 120 - inbytes: 0x0, outbytes: 0x18
Added: 204 - buffers: [0x21], inbytes: 0x1, outbytes: 0x0
Interface Changed: nn::ldn::detail::ISystemLocalCommunicationService
Added: 404 - inbytes: 0x10, outbytes: 0x0, pid: True
Interface Changed: nn::ldn::detail::IUserLocalCommunicationService
Added: 403 - inbytes: 0x4, outbytes: 0x0
Unknown Interface prev-version: 0x7100005438
Unknown Interface cur-version: 0x7100004EF0
Interface Changed: nn::account::IAccountEntityServiceForAccountPolicy
Added: 52 - inbytes: 0x8, outbytes: 0x10
Added: 420 - buffer_entry_sizes: [0xD0], buffers: [0x19], inbytes: 0x10, outbytes: 0x0
Added: 421 - buffer_entry_sizes: [0xD0], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0
Interface Changed: nn::account::IAccountEntityServiceForApplication
Added: 52 - inbytes: 0x8, outbytes: 0x10
Interface Changed: nn::account::IAccountServiceForAdministrator
Added: 52 - inbytes: 0x8, outbytes: 0x10
Added: 420 - buffer_entry_sizes: [0xD0], buffers: [0x19], inbytes: 0x10, outbytes: 0x0
Added: 421 - buffer_entry_sizes: [0xD0], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0
Interface Changed: nn::account::IAccountServiceForSystemService
Added: 52 - inbytes: 0x8, outbytes: 0x10
Interface Changed: nn::account::IAccountServiceForSystemServiceWithProfileEditor
Added: 52 - inbytes: 0x8, outbytes: 0x10
Interface Changed: nn::account::baas::IAdministrator
Added: 4 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Added: 136 - buffer_entry_sizes: [0x270, 0x0], buffers: [0x1A, 0x6], inbytes: 0x0, outbytes: 0x8
Added: 204 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::account::detail::IAsyncContext']
Added: 223 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::account::detail::IAsyncContext']
Interface Changed: nn::account::baas::IManagerForApplication
Added: 4 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::account::baas::IManagerForSystemService
Added: 4 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Added: 136 - buffer_entry_sizes: [0x270, 0x0], buffers: [0x1A, 0x6], inbytes: 0x0, outbytes: 0x8
Interface Changed: nn::account::nas::IOAuthProcedureForExternalNsa
Added: 1000 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::account::profile::IProfile
Added: 40 - inbytes: 0x0, outbytes: 0x10
Interface Changed: nn::account::profile::IProfileEditor
Added: 40 - inbytes: 0x0, outbytes: 0x10
Interface Changed: nn::account::IAccountServiceForAdministrator
Added: 52 - inbytes: 0x8, outbytes: 0x10
Added: 420 - buffer_entry_sizes: [0xD0], buffers: [0x19], inbytes: 0x10, outbytes: 0x0
Added: 421 - buffer_entry_sizes: [0xD0], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0
Interface Changed: nn::account::IAccountServiceForApplication
Added: 52 - inbytes: 0x8, outbytes: 0x10
Interface Changed: nn::account::IAccountServiceForSystemService
Added: 52 - inbytes: 0x8, outbytes: 0x10
Interface Changed: nn::account::baas::IAdministrator
Added: 4 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Added: 136 - buffer_entry_sizes: [0x270, 0x0], buffers: [0x1A, 0x6], inbytes: 0x0, outbytes: 0x8
Added: 204 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::account::detail::IAsyncContext']
Added: 223 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::account::detail::IAsyncContext']
Interface Changed: nn::account::baas::IManagerForApplication
Added: 4 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::account::baas::IManagerForSystemService
Added: 4 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Added: 136 - buffer_entry_sizes: [0x270, 0x0], buffers: [0x1A, 0x6], inbytes: 0x0, outbytes: 0x8
Interface Changed: nn::account::nas::IOAuthProcedureForExternalNsa
Added: 1000 - buffer_entry_sizes: [0x1000, 0x100], buffers: [0x1A, 0x1A], inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::account::profile::IProfile
Added: 40 - inbytes: 0x0, outbytes: 0x10
Interface Changed: nn::account::profile::IProfileEditor
Added: 40 - inbytes: 0x0, outbytes: 0x10
Interface Changed: nn::ns::detail::IApplicationManagerInterface
Changed: 94 - inbytes: 0x58 -> 0x88 (final state: inbytes: 0x88, outbytes: 0x8)
Changed: 95 - outbytes: 0x50 -> 0x80 (final state: inbytes: 0x8, outbytes: 0x80)
Changed: 96 - outbytes: 0x50 -> 0x80 (final state: inbytes: 0x8, outbytes: 0x80)
Changed: 97 - inbytes: 0x50 -> 0x80 (final state: inbytes: 0x80, outbytes: 0x1)
Removed: 406 - buffer_entry_sizes: [0x4000], buffers: [0x16], inbytes: 0x58, outbytes: 0x0
Added: 411 - buffers: [0x6], inbytes: 0x10, outbytes: 0x8
Added: 412 - inbytes: 0x10, outbytes: 0x0, outhandles: [1], outinterfaces: ['nn::ns::detail::IAsyncResult']
Added: 413 - inbytes: 0x1, outbytes: 0x4
Added: 414 - buffer_entry_sizes: [0x20], buffers: [0x6], inbytes: 0x1, outbytes: 0x4
Added: 415 - buffer_entry_sizes: [0x8], buffers: [0x5], inbytes: 0x10, inhandles: [1], outbytes: 0x0, outhandles: [1], outinterfaces: ['nn::ns::detail::IAsyncValue']
Added: 416 - buffers: [0x6], inbytes: 0x10, outbytes: 0x8
Added: 417 - inbytes: 0x1, outbytes: 0x0
Added: 418 - inbytes: 0x10, outbytes: 0x0
Added: 419 - inbytes: 0x10, outbytes: 0x0
Added: 420 - buffer_entry_sizes: [0x18], buffers: [0x5], inbytes: 0x20, outbytes: 0x0
Added: 511 - inbytes: 0x0, outbytes: 0x0, outhandles: [1]
Added: 512 - inbytes: 0x0, outbytes: 0x1
Changed: 1802 - buffer_entry_sizes: [0x90] -> [0x98] (final state: buffer_entry_sizes: [0x98], buffers: [0x6], inbytes: 0x0, outbytes: 0x4)
Changed: 1803 - buffer_entry_sizes: [0xB0] -> [0xB8] (final state: buffer_entry_sizes: [0xB8], buffers: [0x6], inbytes: 0x0, outbytes: 0x4)
Added: 2360 - inbytes: 0x0, outbytes: 0x4
Added: 2361 - inbytes: 0x0, outbytes: 0x4
Changed: 2513 - inbytes: 0x50 -> 0x80 (final state: inbytes: 0x80, outbytes: 0x8)
Changed: 2517 - inbytes: 0x50 -> 0x80 (final state: inbytes: 0x80, outbytes: 0x8)
Added: 2524 - buffer_entry_sizes: [0x300], buffers: [0x16], inbytes: 0x10, outbytes: 0x10
Interface Changed: nn::ns::detail::IDevelopInterface
Changed: 17 - outbytes: 0x50 -> 0x80 (final state: buffers: [0x5], inbytes: 0x4, outbytes: 0x80)
Changed: 18 - inbytes: 0x50 -> 0x80 (final state: inbytes: 0x80, outbytes: 0x0, outhandles: [1])
Changed: 19 - inbytes: 0x50 -> 0x80 (final state: inbytes: 0x80, outbytes: 0x0)
Changed: 21 - outbytes: 0x50 -> 0x80 (final state: inbytes: 0x10, outbytes: 0x80)
Changed: 22 - inbytes: 0x50 -> 0x80 (final state: inbytes: 0x80, outbytes: 0x8)
Changed: 23 - inbytes: 0x50 -> 0x80 (final state: inbytes: 0x80, outbytes: 0x8)
Interface Changed: nn::ns::detail::IDocumentInterface
Added: 2524 - buffer_entry_sizes: [0x300], buffers: [0x16], inbytes: 0x10, outbytes: 0x10
Interface Changed: nn::ns::detail::IReadOnlyApplicationControlDataInterface
Added: 5 - buffers: [0x6], inbytes: 0x10, outbytes: 0x8
Added: 6 - buffers: [0x6], inbytes: 0x10, outbytes: 0x8
Interface Changed: nn::hshl::IChargeSetterSession
Added: 5 - inbytes: 0x1, outbytes: 0x0
Interface Changed: nn::hshl::IManager
Added: 13 - inbytes: 0x0, outbytes: 0x1
Interface Changed: nn::srepo::detail::ipc::ISrepoService
Added: 13002 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::timesrv::detail::service::IStaticService
Added: 600 - inbytes: 0x0, outbytes: 0x8
Interface Changed: nn::timesrv::detail::service::ITimeServiceManager
Added: 20 - inbytes: 0x0, outbytes: 0x18
Interface Changed: nn::capsrv::sf::IAlbumAccessorService
Added: 8022 - buffer_entry_sizes: [0x20, 0x10], buffers: [0x6, 0x5], inbytes: 0x10, outbytes: 0x8
Added: 50001 - buffers: [0x6], inbytes: 0x18, outbytes: 0x0
Added: 50011 - inbytes: 0x0, outbytes: 0x4
Added: 50012 - inbytes: 0x4, outbytes: 0x0
Interface Changed: nn::capsrv::sf::IAlbumAccessorSession
Added: 2009 - inbytes: 0x8, outbytes: 0x10
Interface Changed: nn::capsrv::sf::IAlbumControlService
Changed: 2011 - inbytes: 0x10 -> 0x18 (final state: inbytes: 0x18, outbytes: 0x0)
Changed: 2012 - inbytes: 0x10 -> 0x18 (final state: inbytes: 0x18, outbytes: 0x0)
Changed: 2013 - outbytes: 0x8 -> 0x10 (final state: inbytes: 0x8, outbytes: 0x10)
Changed: 2101 - inbytes: 0x10 -> 0x18 (final state: inbytes: 0x18, outbytes: 0x18)
Added: 2103 - buffer_entry_sizes: [0x200, 0x88], buffers: [0x16, 0x15], inbytes: 0x8, outbytes: 0x0
Added: 2104 - buffer_entry_sizes: [0x200], buffers: [0x16], inbytes: 0x20, outbytes: 0x0
Added: 2401 - buffer_entry_sizes: [0x400], buffers: [0x16], inbytes: 0x18, outbytes: 0x0
Added: 2501 - inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::capsrv::sf::IAlbumControlSession
Added: 2009 - inbytes: 0x8, outbytes: 0x10
Interface Added: nn::am::service::IApplicationObserver
Interface Added: nn::am::service::IMovieWriter
Interface Added: nn::am::service::ISystemProcessCommonFunctions
Interface Added: nn::grcsrv::IMovieWriter
Interface Changed: nn::am::service::IAllSystemAppletProxiesService
Added: 450 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::am::service::ISystemProcessCommonFunctions']
Interface Changed: nn::am::service::IAppletCommonFunctions
Added: 310 - inbytes: 0x0, outbytes: 0x1
Added: 320 - inbytes: 0x8, outbytes: 0x0
Added: 321 - inbytes: 0x8, outbytes: 0x0
Added: 330 - inbytes: 0x0, outbytes: 0x1
Interface Changed: nn::am::service::IApplicationFunctions
Added: 300 - inbytes: 0x8, inhandles: [1], outbytes: 0x0, outinterfaces: ['nn::am::service::IMovieWriter']
Interface Changed: nn::am::service::ICommonStateGetter
Added: 15 - inbytes: 0x0, outbytes: 0x0, outhandles: [1]
Removed: 600 - inbytes: 0x10, outbytes: 0x0, outinterfaces: ['nn::am::service::IStorageChannel']
Added: 1000 - inbytes: 0x0, outbytes: 0x0
Added: 1001 - inbytes: 0x0, outbytes: 0x0
Added: 1002 - inbytes: 0x0, outbytes: 0x1
Interface Changed: nn::am::service::IDebugFunctions
Changed: 31 - inbytes: 0x58 -> 0x88 (final state: buffer_entry_sizes: [0x10, 0x0], buffers: [0x5, 0x5], inbytes: 0x88, outbytes: 0x0)
Interface Changed: nn::am::service::IHomeMenuFunctions
Added: 60 - inbytes: 0x0, outbytes: 0x0
Added: 61 - inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::am::service::ILibraryAppletAccessor
Added: 80 - inbytes: 0x0, outbytes: 0x0
Added: 81 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::am::service::IAppletAccessor']
Interface Changed: nn::am::service::IOverlayFunctions
Added: 50 - inbytes: 0x8, outbytes: 0x0
Added: 60 - inbytes: 0x1, outbytes: 0x0
Interface Changed: nn::am::service::ISelfController
Added: 22 - inbytes: 0x0, outbytes: 0x1
Added: 23 - inbytes: 0x0, outbytes: 0x1
Added: 24 - inbytes: 0x0, outbytes: 0x10
Interface Changed: nn::grcsrv::IGameMovieTrimmer
Added: 21 - buffers: [0x45], inbytes: 0x8, outbytes: 0x0
Interface Changed: nn::ssl::sf::ISslServiceForSystem
Changed: 103 - inbytes: 0x0 -> 0x4 (final state: buffers: [0x5, 0x5, 0x5], inbytes: 0x4, outbytes: 0x0)
Interface Changed: nn::nim::detail::INetworkInstallManager
Added: 150 - buffer_entry_sizes: [0x300], buffers: [0x16], inbytes: 0x20, outbytes: 0x0
Interface Changed: nn::erpt::sf::IContext
Changed: 2 - inbytes: 0x18 -> 0x20 (final state: inbytes: 0x20, outbytes: 0x0)
Interface Changed: nn::capsrv::sf::IScreenShotControlService
Changed: 1004 - inbytes: 0x68 -> 0x70 (final state: buffer_entry_sizes: [0x404, 0x88], buffers: [0x15, 0x15], inbytes: 0x70, outbytes: 0x0)
Changed: 1106 - inbytes: 0x68 -> 0x78 (final state: buffer_entry_sizes: [0x400, 0x404, 0x88, 0x0, 0x0, 0x0], buffers: [0x15, 0x15, 0x15, 0x6, 0x46, 0x46], inbytes: 0x78, outbytes: 0x18)
Changed: 1107 - inbytes: 0x68 -> 0x78 (final state: buffer_entry_sizes: [0x400, 0x404, 0x88, 0x0, 0x0], buffers: [0x15, 0x15, 0x15, 0x6, 0x45], inbytes: 0x78, outbytes: 0x18)
Changed: 1108 - inbytes: 0x70 -> 0x80 (final state: buffer_entry_sizes: [0x400, 0x404, 0x88, 0x0], buffers: [0x15, 0x15, 0x15, 0x6], inbytes: 0x80, outbytes: 0x18)
Added: 1109 - buffer_entry_sizes: [0x400, 0x404, 0x88, 0x0, 0x0, 0x0], buffers: [0x15, 0x15, 0x15, 0x6, 0x45, 0x45], inbytes: 0x78, outbytes: 0x18
Added: 1110 - buffers: [0x6, 0x45, 0x6], inbytes: 0x8, outbytes: 0x8
Added: 1111 - buffer_entry_sizes: [0x400, 0x404, 0x0, 0x0, 0x0], buffers: [0x15, 0x15, 0x6, 0x46, 0x46], inbytes: 0x80, outbytes: 0x18
Added: 1112 - buffer_entry_sizes: [0x400, 0x404, 0x0, 0x0], buffers: [0x15, 0x15, 0x6, 0x45], inbytes: 0x80, outbytes: 0x18
Added: 1113 - buffer_entry_sizes: [0x400, 0x404, 0x0], buffers: [0x15, 0x15, 0x6], inbytes: 0x88, outbytes: 0x18
Added: 1114 - buffer_entry_sizes: [0x400, 0x404, 0x0, 0x0, 0x0], buffers: [0x15, 0x15, 0x6, 0x45, 0x45], inbytes: 0x80, outbytes: 0x18
Interface Changed: nn::capsrv::sf::IScreenShotService
Changed: 1000 - inbytes: 0x68 -> 0x70 (final state: buffer_entry_sizes: [0x88, 0x400], buffers: [0x15, 0x15], inbytes: 0x70, outbytes: 0x20)
Interface Changed: nn::dp2hdmi::detail::IDp2hdmiController
Removed: 7 - inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::pctl::detail::ipc::IParentalControlService
Added: 2017 - inbytes: 0x20, outbytes: 0x8, outhandles: [1]
Added: 2019 - inbytes: 0x0, outbytes: 0x0
Interface Added: nn::npns::IFuture
Interface Added: nn::npns::ISubscriptionUpdateNotifier
Interface Changed: nn::npns::INpnsSystem
Added: 17 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::npns::ISubscriptionUpdateNotifier']
Added: 60 - buffer_entry_sizes: [0x298], buffers: [0x15], inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::npns::IFuture']
Added: 61 - inbytes: 0x0, outbytes: 0x1
Added: 141 - buffers: [0x9], inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::npns::IFuture']
Added: 142 - buffers: [0x9], inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::npns::IFuture']
Added: 143 - buffers: [0x9], inbytes: 0x8, outbytes: 0x0, outinterfaces: ['nn::npns::IFuture']
Added: 144 - buffers: [0x9], inbytes: 0x8, outbytes: 0x0, outinterfaces: ['nn::npns::IFuture']
Added: 145 - inbytes: 0x10, inhandles: [1], outbytes: 0x0, outinterfaces: ['nn::npns::IFuture']
Interface Changed: nn::arp::detail::IRegistrar
Removed: 2 - buffer_entry_sizes: [0x4000], buffers: [0x15], inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::arp::detail::IWriter
Added: 4 - buffer_entry_sizes: [0x4000], buffers: [0x15], inbytes: 0x8, outbytes: 0x0
Interface Changed: nn::timesrv::detail::service::IStaticService
Added: 600 - inbytes: 0x0, outbytes: 0x8
Interface Changed: nn::es::IETicketService
Changed: 1027 - buffer_entry_sizes: [0x10, 0x0] -> [0x10, 0x8, 0x0], buffers: [0x6, 0x5] -> [0x6, 0x5, 0x5], inbytes: 0x10 -> 0x8 (final state: buffer_entry_sizes: [0x10, 0x8, 0x0], buffers: [0x6, 0x5, 0x5], inbytes: 0x8, outbytes: 0x4)
Added: 1029 - buffer_entry_sizes: [0x18, 0x8, 0x0], buffers: [0x6, 0x5, 0x5], inbytes: 0x10, outbytes: 0x4
Interface Added: nn::grcsrv::IMovieWriter
Interface Changed: nn::grcsrv::IGameMovieTrimmer
Added: 21 - buffers: [0x45], inbytes: 0x8, outbytes: 0x0
Interface Changed: nn::grcsrv::IGrcService
Added: 110 - inbytes: 0x20, inhandles: [1], outbytes: 0x0, outinterfaces: ['nn::grcsrv::IMovieWriter']
Interface Changed: nn::mii::detail::IDatabaseService
Added: 27 - inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::mii::detail::IImageDatabaseService
Added: 18 - buffers: [0x5], inbytes: 0x3A, outbytes: 0x0
Interface Changed: nn::migration::savedata::IClient
Added: 510 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::migration::detail::IAsyncContext']
Interface Changed: nn::migration::savedata::IServer
Added: 510 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::migration::detail::IAsyncContext']
Interface Changed: nn::migration::user::IService
Added: 0 - inbytes: 0x0, outbytes: 0x2
Interface Changed: nn::olsc::srv::IOlscServiceForSystemService
Changed: 907 - inbytes: 0x70 -> 0x78 (final state: inbytes: 0x78, outbytes: 0x0)
Interface Changed: nn::omm::detail::IOperationModeManager
Added: 29 - inbytes: 0x0, outbytes: 0x0, outhandles: [1]
Interface Changed: nn::omm::srv::IDisplayLayerControl
Changed: 610 - buffer_entry_sizes: [0x4C8] -> [0x4D0] (final state: buffer_entry_sizes: [0x4D0], buffers: [0x15], inbytes: 0x0, outbytes: 0x0)
Changed: 611 - buffer_entry_sizes: [0x4C8] -> [0x4D0] (final state: buffer_entry_sizes: [0x4D0], buffers: [0x15], inbytes: 0x0, outbytes: 0x0)
Changed: 612 - buffer_entry_sizes: [0x4C8] -> [0x4D0] (final state: buffer_entry_sizes: [0x4D0], buffers: [0x15], inbytes: 0x0, outbytes: 0x0)
Interface Changed: nn::fssrv::sf::IDeviceOperator
Changed: 206 - outbytes: 0x0 -> 0x8 (final state: buffers: [0x6], inbytes: 0x10, outbytes: 0x8)
Added: 223 - inbytes: 0x8, outbytes: 0x0
Added: 224 - buffers: [0x6], inbytes: 0x10, outbytes: 0x2
Interface Changed: nn::fssrv::sf::IFileSystemProxy
Added: 29 - inbytes: 0x0, outbytes: 0x1
Added: 503 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::fssrv::sf::IEventNotifier']
Added: 632 - inbytes: 0x20, outbytes: 0x0
Added: 820 - inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::ldr::detail::IProcessManagerInterface
Changed: 1 - buffer_entry_sizes: [0x400] -> [0x410] (final state: buffer_entry_sizes: [0x410], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0)
Interface Changed: nn::pm::detail::IBootModeInterface
Added: 2 - inbytes: 0x0, outbytes: 0x4
Added: 3 - inbytes: 0x4, outbytes: 0x0
Interface Changed: nn::pm::detail::IShellInterface
Added: 12 - inbytes: 0x8, outbytes: 0x8
Interface Changed: nn::sasbus::ISession
Added: 4 - inbytes: 0x10, inhandles: [1], outbytes: 0x0
Added: 5 - inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::fssrv::sf::IDeviceOperator
Changed: 206 - outbytes: 0x0 -> 0x8 (final state: buffers: [0x6], inbytes: 0x10, outbytes: 0x8)
Added: 223 - inbytes: 0x8, outbytes: 0x0
Added: 224 - buffers: [0x6], inbytes: 0x10, outbytes: 0x2
Interface Changed: nn::fssrv::sf::IFileSystemProxy
Added: 29 - inbytes: 0x0, outbytes: 0x1
Added: 503 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::fssrv::sf::IEventNotifier']
Added: 632 - inbytes: 0x20, outbytes: 0x0
Added: 820 - inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::ldr::detail::IProcessManagerInterface
Changed: 1 - buffer_entry_sizes: [0x400] -> [0x410] (final state: buffer_entry_sizes: [0x410], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0)
Interface Changed: nn::pm::detail::IBootModeInterface
Added: 2 - inbytes: 0x0, outbytes: 0x4
Added: 3 - inbytes: 0x4, outbytes: 0x0
Interface Changed: nn::pm::detail::IShellInterface
Added: 12 - inbytes: 0x8, outbytes: 0x8
Interface Changed: nn::hshl::IChargeSetterSession
Added: 5 - inbytes: 0x1, outbytes: 0x0
Interface Changed: nn::hshl::IManager
Added: 13 - inbytes: 0x0, outbytes: 0x1
Interface Changed: nn::srepo::detail::ipc::ISrepoService
Added: 13002 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::timesrv::detail::service::IStaticService
Added: 600 - inbytes: 0x0, outbytes: 0x8
Interface Changed: nn::timesrv::detail::service::ITimeServiceManager
Added: 20 - inbytes: 0x0, outbytes: 0x18
Interface Changed: nn::fssrv::sf::IDeviceOperator
Changed: 206 - outbytes: 0x0 -> 0x8 (final state: buffers: [0x6], inbytes: 0x10, outbytes: 0x8)
Added: 223 - inbytes: 0x8, outbytes: 0x0
Added: 224 - buffers: [0x6], inbytes: 0x10, outbytes: 0x2
Interface Changed: nn::fssrv::sf::IFileSystemProxy
Added: 29 - inbytes: 0x0, outbytes: 0x1
Added: 503 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::fssrv::sf::IEventNotifier']
Added: 632 - inbytes: 0x20, outbytes: 0x0
Added: 820 - inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::ldr::detail::IProcessManagerInterface
Changed: 1 - buffer_entry_sizes: [0x400] -> [0x410] (final state: buffer_entry_sizes: [0x410], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0)
Interface Changed: nn::pm::detail::IBootModeInterface
Added: 2 - inbytes: 0x0, outbytes: 0x4
Added: 3 - inbytes: 0x4, outbytes: 0x0
Interface Changed: nn::pm::detail::IShellInterface
Added: 12 - inbytes: 0x8, outbytes: 0x8
Interface Changed: nn::sasbus::ISession
Added: 4 - inbytes: 0x10, inhandles: [1], outbytes: 0x0
Added: 5 - inbytes: 0x0, outbytes: 0x0
Interface Changed: nn::fssrv::sf::IDeviceOperator
Changed: 206 - outbytes: 0x0 -> 0x8 (final state: buffers: [0x6], inbytes: 0x10, outbytes: 0x8)
Added: 223 - inbytes: 0x8, outbytes: 0x0
Added: 224 - buffers: [0x6], inbytes: 0x10, outbytes: 0x2
Interface Changed: nn::fssrv::sf::IFileSystemProxy
Added: 29 - inbytes: 0x0, outbytes: 0x1
Added: 503 - inbytes: 0x0, outbytes: 0x0, outinterfaces: ['nn::fssrv::sf::IEventNotifier']
Added: 632 - inbytes: 0x20, outbytes: 0x0
Added: 820 - inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::ldr::detail::IProcessManagerInterface
Changed: 1 - buffer_entry_sizes: [0x400] -> [0x410] (final state: buffer_entry_sizes: [0x410], buffers: [0x1A], inbytes: 0x10, outbytes: 0x0)
Interface Changed: nn::pm::detail::IBootModeInterface
Added: 2 - inbytes: 0x0, outbytes: 0x4
Added: 3 - inbytes: 0x4, outbytes: 0x0
Interface Changed: nn::pm::detail::IShellInterface
Added: 12 - inbytes: 0x8, outbytes: 0x8
Interface Changed: nn::hshl::IChargeSetterSession
Added: 5 - inbytes: 0x1, outbytes: 0x0
Interface Changed: nn::hshl::IManager
Added: 13 - inbytes: 0x0, outbytes: 0x1
Interface Changed: nn::srepo::detail::ipc::ISrepoService
Added: 13002 - buffers: [0x6], inbytes: 0x0, outbytes: 0x4
Interface Changed: nn::timesrv::detail::service::IStaticService
Added: 600 - inbytes: 0x0, outbytes: 0x8
Interface Changed: nn::timesrv::detail::service::ITimeServiceManager
Added: 20 - inbytes: 0x0, outbytes: 0x18
# BootImagePackages
RomFs changes: all files updated.
Using updated master-key: master_key_12 (previously master_key_11). See [NCA](https://switchbrew.org/wiki/NCA) for the KeyGeneration listing.
The anti-downgrade fuses were [updated](https://switchbrew.org/wiki/Fuses#Anti-downgrade).
# Kernel
KMemoryManager now supports per-pool-partition minimum page alignments.
KMemoryManager::Initialize now aborts unless a valid pool index is chosen.
KMemoryManager::Initialize now takes an additional array argument of minimum-page alignments (one array entry per pool partition).
This array is currently all-zero, which corresponds to minimum allocation alignment of 0x1000 (1 page).
Allocation functions now check that alignment is valid for the pool's minimum.
MapPhysicalMemory now checks alignment based on the mm min-pages.
UnmapPhysicalMemory now checks alignment based on the mm min-pages.
StartProcess() now checks alignment/aligns up based on the mm min-pages.
KProcess::Run no longer aligns the input stack-size up to page size when checking that stack + code size does not exceed m_max_process_memory.
KMemoryBlock was refactored:
Fields were shuffled around, optimizing the storage layout.
The last field now ends @ +0x3A, instead of +0x40 before, coming close to but not actually saving 8 bytes per block.
This presumably makes space for fields which are ifdef'd out on NX.
DisableMergeAttribute_(Device)Right is now 0x20, instead of 0x10.
Bit 0x10 appears nowhere in entire kernel now, and code which previously did & 0xF to get the Left disable attrs still does & 0xF.
Bit 0x10 is presumably ifdef'd out on NX.
KMemoryInfo is essentially no longer used at all any more.
All cases where GetMemoryInfo was called now use the fields from the KMemoryBlock directly.
The one exception to this is KPageTableBase::QueryInfo, which still returns a KMemoryInfo as output variable.
The kernel now handles ttbr0 management completely differently:
The kernel now stores an array of 0x51 TTBR0 pages (Kernel + 0x50 KProcesses, matching the slab heap size) in .rodata.
Initialize1 now calls a new function prior to unmapping the identity mapping which allocates these pages from the InitialPageAllocator (using paddr lookup + the identity mapping to write to the read-only array in .rodata).
KSleepSystemRegisters::Save no longer saves TTBR0_EL1; ::Restore sets ttbr0_el1 to g_Ttbr0Pages[0].
KProcess::InitializeUser now checks that the KProcess is within the slabheap; the KProcess's slab heap index is now passed to KProcessPageTable::Initialize.
KPageTable no longer has any globals to track ASID management; ASID is now just the KProcess's slab heap index + 1.
KTargetSystem refactor:
KTargetSystem is now located in .rodata, and no longer 4-byte aligns the bools.
new .init_array function initializes all the KTargetSystem values in .rodata (before the region is write-protected) using values-from-smc.
KSystemControl::Initialize() now sets new bool (g_HasKTargetSystem) to true.
Instead of setting values, KSystemControl now does ABORT_UNLESS(value_from_smc == (g_HasKTargetSystem && g_KTargetSystem.value)) for all values.
This essentially just checks that the previous .init call worked as expected.
All KTargetSystem::Is*() calls now return g_HasKTargetSystem && g_KTargetSystem.value instead of just returning g_KTargetSystem.value
Note: these are still fully inlined in all cases.
KAddressSpaceInfo::GetBegin/GetSize now take in CreateProcess flags instead of bit-width.
svc::WaitForAddress now supports a new ArbitrationType (ArbitrationType_WaitIfEqual64, value=3).
svc::WaitForAddress's "value" parameter is now an int64_t, instead of an int32_t.
When ArbitrationType_WaitIfEqual64 is passed, address is now checked for 8-byte alignment instead of 4-byte alignment, and 64-bit value is read/compared from userspace instead of 32-bit.
New InfoType 0x22: "InfoType_TransferMemoryHint"
This returns a hint for the transfer memory's process address.
InfoType values 0x1D-0x21 are presumably ifdef'd out on NX.
KProcess->max_process_memory is now set to GetHeapRegionSize() in all cases.
Previously, this was GetHeapRegionSize() + GetAliasRegionSize() for processes with AddressSpace32BitWithoutAlias.
The kernel now supports execute-only memory (--X).
SetProcessMemoryPermission now supports MemoryPermission_Execute.
KPageTableBase::SetProcessMemoryPermission now acquires and immediately releases the scheduler lock prior to operating, if the Execute bit is set on the input permissions.
KPageTable::GetEntryTemplate now checks for the MemoryPermission_Execute bit instead of checking directly against ReadExecute.
HandleException now supports using supervisor-mode access to read the failing instruction on Unknown/IllegalState/Bkpt/Brk.
Supervisor-mode access is used only if user-access fails, KTargetSystem::IsDebugMode() returns true, pc is 4-byte aligned, and 0x200000 <= PC <= (1 << 39).
HandleException now no longer forces processing when accessing MemoryState_Code without KMemoryPermission_UserRead.
The way DebugFlags capabilities works was changed:
Previously, bit0=AllowDebug, bit1=ForceDebug.
Now, bit0=AllowDebug, bit1=ForceDebugProd, bit2=ForceDebug.
Processes may now only have one of the above bits set, previously both AllowDebug and ForceDebug were allowed simultaneously.
New function requires KTargetSystem::IsDebugMode():
GetProcessList,
Many functions now require (KTargetSystem::IsDebugMode() || GetCurrentProcess().IsForceDebugProd()):
DebugActiveProcess, GetDebugEvent, QueryDebugProcessMemory, ReadDebugMemory, GetThreadList, GetDebugThreadContext, GetDebugThreadParam,
KDebug now has a member which tracks whether the owner process is ForceDebugProd.
KDebugBase::Attach now requires !ForceDebugProd when attaching to a process in the Created/Running states.
Crashed may still be attached to when ForceDebugProd.
KDebugBase::GetDebugEventInfo now always sets instruction = 0 when creating info for an UndefinedInstruction exception when ForceDebugProd.
KDebugBase::(Read/Write)Memory no longer allow reading/writing Io memory when ForceDebugProd is set.
KPageTableBase::(Read/Write)DebugMemory now check memory state differently:
Previously: either memory had to be UserRead/UserReadWrite (no state flags check) or KMemoryState_FlagCanDebug had to be set.
Now: memory has to be UserRead/UserReadWrite (no state flags check) or (memory has to be UserRead AND KMemoryState_FlagCanDebug has to be set) or (IsDebugMode() && !ForceDebugProd && memory has to have KernelRead|UserExecute bits && KMemoryState_FlagCanDebug has to be set)
This renders the original flag check completely pointless for ReadDebugMemory (but still allows writing to UserRead memory).
Memory which was previously readable despite not-user-read is no longer readable.
Execute-only memory is readable, but only when running under debug mode and using a KDebug created by a process which does not have ForceDebugProd set.
The ForceDebugProd check is not present for WriteDebugMemory.
GetThreadList() no longer functions in non-debug mode even with ForceDebugProd
KDebugBase::TerminateProcess no longer detaches from the target process.
Changes relevant to debugging the kernel:
EL1SynchronousExceptionHandler now infinite loops instead of calling HandleException.
SupervisorModeThreadStarter now sets X30 to 0 + creates a stack frame + invokes the thread function with "BLR X1" instead of "BR X1".
This guarantees validity if walking kernel stack frames.
KPageTable implementation was heavily rewritten.
Too many changes to summarize here; the fundamental implementation is now based on iteration over levels using TraversalContext instead of separate per-level logic.
KPageTableBase::SetupForIpcClient now validates that the unused (on nx) upper memory attribute bits are all unset.
Many heavy K(Initial)PageTable changes, including:
KInitialPageTable's table entries no longer have bit 58 (0x0400000000000000) set; previously this was used to indicate/determine whether a mapping was present even if the entry was NotMapped.
Bit0 (0x1) is now used to check for mapping existence again in many places.
KPageTableImpl::InitializeForKernel now iterates over mappings created by KInitialPageTable, setting PageAttribute=#used entries for tables and setting bit 58 on blocks.
KInterruptController::Finalize() now sets m_gicd and m_gicc to nullptr if core id == 0.
# [audio](https://switchbrew.org/wiki/Audio_services)
Besides IPC changes, vulns were [fixed](https://switchbrew.org/wiki/Switch_System_Flaws).
# [ssl](https://switchbrew.org/wiki/SSL_services)
Besides IPC changes, a vuln was [fixed](https://switchbrew.org/wiki/Switch_System_Flaws).