apic: avoid warning message for ancient single-core, non-HT processors. fixes #985

wvm: improve diagnostics if allocation failed

This was SVN commit r10374.
This commit is contained in:
janwas 2011-10-08 16:53:57 +00:00
parent 39e5cb5dc9
commit a106b9da0b
2 changed files with 5 additions and 2 deletions

View File

@ -52,7 +52,9 @@ static Status GetAndValidateApicIds()
const size_t numUnique = end-sortedApicIds;
// all IDs are zero - system lacks an xAPIC.
if(numUnique == 1 && sortedApicIds[0] == 0)
// (NB: we exclude single-processor systems in this test -
// having one zero-valued ID is legitimate)
if(numUnique == 1 && sortedApicIds[0] == 0 && numIds != 1)
{
debug_printf(L"APIC: all zero\n");
return ERR::CPU_FEATURE_MISSING; // NOWARN

View File

@ -287,6 +287,7 @@ CACHE_ALIGNED(struct AddressRangeDescriptor) // POD
base = (intptr_t)AllocateLargeOrSmallPages(0, totalSize, MEM_RESERVE);
if(!base)
{
debug_printf(L"AllocateLargeOrSmallPages of %lld failed\n", (u64)totalSize);
DEBUG_DISPLAY_ERROR(ErrorString());
return ERR::NO_MEM; // NOWARN (error string is more helpful)
}
@ -344,7 +345,7 @@ CACHE_ALIGNED(struct AddressRangeDescriptor) // POD
static const wchar_t* ErrorString()
{
#if ARCH_IA32
return L"Out of address space (64-bit OS is required)";
return L"Out of address space (64-bit OS may help)";
#elif OS_WIN
// because early AMD64 lacked CMPXCHG16B, the Windows lock-free slist
// must squeeze the address, ABA tag and list length (a questionable