|
@@ -35,15 +35,15 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
|
|
DebuggingFlags &= ~3u;
|
|
DebuggingFlags &= ~3u;
|
|
|
KernelReleaseVersion = KProcess.KernelVersionPacked;
|
|
KernelReleaseVersion = KProcess.KernelVersionPacked;
|
|
|
|
|
|
|
|
- return Parse(capabilities, memoryManager);
|
|
|
|
|
|
|
+ return Parse(capabilities, memoryManager, false);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public Result InitializeForUser(ReadOnlySpan<uint> capabilities, KPageTableBase memoryManager)
|
|
|
|
|
|
|
+ public Result InitializeForUser(ReadOnlySpan<uint> capabilities, KPageTableBase memoryManager, bool isApplication)
|
|
|
{
|
|
{
|
|
|
- return Parse(capabilities, memoryManager);
|
|
|
|
|
|
|
+ return Parse(capabilities, memoryManager, isApplication);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private Result Parse(ReadOnlySpan<uint> capabilities, KPageTableBase memoryManager)
|
|
|
|
|
|
|
+ private Result Parse(ReadOnlySpan<uint> capabilities, KPageTableBase memoryManager, bool isApplication)
|
|
|
{
|
|
{
|
|
|
int mask0 = 0;
|
|
int mask0 = 0;
|
|
|
int mask1 = 0;
|
|
int mask1 = 0;
|
|
@@ -54,7 +54,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
|
|
|
|
|
|
|
if (cap.GetCapabilityType() != CapabilityType.MapRange)
|
|
if (cap.GetCapabilityType() != CapabilityType.MapRange)
|
|
|
{
|
|
{
|
|
|
- Result result = ParseCapability(cap, ref mask0, ref mask1, memoryManager);
|
|
|
|
|
|
|
+ Result result = ParseCapability(cap, ref mask0, ref mask1, memoryManager, isApplication);
|
|
|
|
|
|
|
|
if (result != Result.Success)
|
|
if (result != Result.Success)
|
|
|
{
|
|
{
|
|
@@ -120,7 +120,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
|
|
return Result.Success;
|
|
return Result.Success;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private Result ParseCapability(uint cap, ref int mask0, ref int mask1, KPageTableBase memoryManager)
|
|
|
|
|
|
|
+ private Result ParseCapability(uint cap, ref int mask0, ref int mask1, KPageTableBase memoryManager, bool isApplication)
|
|
|
{
|
|
{
|
|
|
CapabilityType code = cap.GetCapabilityType();
|
|
CapabilityType code = cap.GetCapabilityType();
|
|
|
|
|
|
|
@@ -176,6 +176,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
|
|
AllowedCpuCoresMask = GetMaskFromMinMax(lowestCpuCore, highestCpuCore);
|
|
AllowedCpuCoresMask = GetMaskFromMinMax(lowestCpuCore, highestCpuCore);
|
|
|
AllowedThreadPriosMask = GetMaskFromMinMax(lowestThreadPrio, highestThreadPrio);
|
|
AllowedThreadPriosMask = GetMaskFromMinMax(lowestThreadPrio, highestThreadPrio);
|
|
|
|
|
|
|
|
|
|
+ if (isApplication && lowestCpuCore == 0 && highestCpuCore != 2)
|
|
|
|
|
+ Ryujinx.Common.Logging.Logger.Error?.Print(Ryujinx.Common.Logging.LogClass.Application, $"Application requested cores with index range {lowestCpuCore} to {highestCpuCore}! Report this to @LotP on the Ryujinx/Ryubing discord server (discord.gg/ryujinx)!");
|
|
|
|
|
+ else if (isApplication)
|
|
|
|
|
+ Ryujinx.Common.Logging.Logger.Info?.Print(Ryujinx.Common.Logging.LogClass.Application, $"Application requested cores with index range {lowestCpuCore} to {highestCpuCore}");
|
|
|
|
|
+
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
|
|
|