diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
index 463b07a7a53949438adcaed9292fc2686387738c..a55765e3290acebd126a7ae205a46792827b4f07 100644
--- a/indra/llcommon/llprocessor.cpp
+++ b/indra/llcommon/llprocessor.cpp
@@ -240,7 +240,9 @@ class LLProcessorInfoImpl
 	std::string getCPUFamilyName() const { return getInfo(eFamilyName, "Unknown").asString(); }
 	std::string getCPUBrandName() const { return getInfo(eBrandName, "Unknown").asString(); }
 
-	std::string getCPUFeatureDescription() const 
+	// This is virtual to support a different linux format.
+	// *NOTE:Mani - I didn't want to screw up server use of this data...
+	virtual std::string getCPUFeatureDescription() const 
 	{
 		std::ostringstream out;
 		out << std::endl << std::endl;
@@ -671,6 +673,7 @@ class LLProcessorInfoDarwinImpl : public LLProcessorInfoImpl
 };
 
 #elif LL_LINUX
+const char CPUINFO_FILE[] = "/proc/cpuinfo";
 
 class LLProcessorInfoLinuxImpl : public LLProcessorInfoImpl
 {
@@ -820,6 +823,33 @@ class LLProcessorInfoLinuxImpl : public LLProcessorInfoImpl
 	
 # endif // LL_X86
 	}
+
+	std::string getCPUFeatureDescription() const 
+	{
+		std::ostringstream s;
+
+		// *NOTE:Mani - This is for linux only.
+		LLFILE* cpuinfo = LLFile::fopen(CPUINFO_FILE, "rb");
+		if(cpuinfo)
+		{
+			char line[MAX_STRING];
+			memset(line, 0, MAX_STRING);
+			while(fgets(line, MAX_STRING, cpuinfo))
+			{
+				line[strlen(line)-1] = ' ';
+				s << line;
+				s << std::endl;
+			}
+			fclose(cpuinfo);
+			s << std::endl;
+		}
+		else
+		{
+			s << "Unable to collect processor information" << std::endl;
+		}
+		return s.str();
+	}
+		
 };
 
 
@@ -839,11 +869,13 @@ LLProcessorInfo::LLProcessorInfo() : mImpl(NULL)
 		static LLProcessorInfoDarwinImpl the_impl; 
 		mImpl = &the_impl;
 #else
-	#error "Unimplemented"
+		static LLProcessorInfoLinuxImpl the_impl; 
+		mImpl = &the_impl;		
 #endif // LL_MSVC
 	}
 }
 
+
 LLProcessorInfo::~LLProcessorInfo() {}
 F64 LLProcessorInfo::getCPUFrequency() const { return mImpl->getCPUFrequency(); }
 bool LLProcessorInfo::hasSSE() const { return mImpl->hasSSE(); }
diff --git a/indra/llcommon/llprocessor.h b/indra/llcommon/llprocessor.h
index e33af7714363d636311de5c84e0c929d8b91a6b8..8350155050d11b7710b4d1acaa30964f3315fc48 100644
--- a/indra/llcommon/llprocessor.h
+++ b/indra/llcommon/llprocessor.h
@@ -52,165 +52,4 @@ class LLProcessorInfo
 	LLProcessorInfoImpl* mImpl;
 };
 
-# if 0
-// Author: Benjamin Jurke
-// File history: 27.02.2002   File created.
-///////////////////////////////////////////
-
-// Options:
-///////////
-#if LL_WINDOWS
-#define PROCESSOR_FREQUENCY_MEASURE_AVAILABLE
-#endif
-
-#if LL_MSVC && _M_X64
-#      define LL_X86_64 1
-#      define LL_X86 1
-#elif LL_MSVC && _M_IX86
-#      define LL_X86 1
-#elif LL_GNUC && ( defined(__amd64__) || defined(__x86_64__) )
-#      define LL_X86_64 1
-#      define LL_X86 1
-#elif LL_GNUC && ( defined(__i386__) )
-#      define LL_X86 1
-#elif LL_GNUC && ( defined(__powerpc__) || defined(__ppc__) )
-#      define LL_PPC 1
-#endif
-
-
-struct ProcessorExtensions
-{
-	bool FPU_FloatingPointUnit;
-	bool VME_Virtual8086ModeEnhancements;
-	bool DE_DebuggingExtensions;
-	bool PSE_PageSizeExtensions;
-	bool TSC_TimeStampCounter;
-	bool MSR_ModelSpecificRegisters;
-	bool PAE_PhysicalAddressExtension;
-	bool MCE_MachineCheckException;
-	bool CX8_COMPXCHG8B_Instruction;
-	bool APIC_AdvancedProgrammableInterruptController;
-	unsigned int APIC_ID;
-	bool SEP_FastSystemCall;
-	bool MTRR_MemoryTypeRangeRegisters;
-	bool PGE_PTE_GlobalFlag;
-	bool MCA_MachineCheckArchitecture;
-	bool CMOV_ConditionalMoveAndCompareInstructions;
-	bool FGPAT_PageAttributeTable;
-	bool PSE36_36bitPageSizeExtension;
-	bool PN_ProcessorSerialNumber;
-	bool CLFSH_CFLUSH_Instruction;
-	unsigned int CLFLUSH_InstructionCacheLineSize;
-	bool DS_DebugStore;
-	bool ACPI_ThermalMonitorAndClockControl;
-	bool EMMX_MultimediaExtensions;
-	bool MMX_MultimediaExtensions;
-	bool FXSR_FastStreamingSIMD_ExtensionsSaveRestore;
-	bool SSE_StreamingSIMD_Extensions;
-	bool SSE2_StreamingSIMD2_Extensions;
-	bool Altivec_Extensions;
-	bool SS_SelfSnoop;
-	bool HT_HyperThreading;
-	unsigned int HT_HyterThreadingSiblings;
-	bool TM_ThermalMonitor;
-	bool IA64_Intel64BitArchitecture;
-	bool _3DNOW_InstructionExtensions;
-	bool _E3DNOW_InstructionExtensions;
-	bool AA64_AMD64BitArchitecture;
-};
-
-struct ProcessorCache
-{
-	bool bPresent;
-	char strSize[32];	/* Flawfinder: ignore */	
-	unsigned int uiAssociativeWays;
-	unsigned int uiLineSize;
-	bool bSectored;
-	char strCache[128];	/* Flawfinder: ignore */	
-};
-
-struct ProcessorL1Cache
-{
-    ProcessorCache Instruction;
-	ProcessorCache Data;
-};
-
-struct ProcessorTLB
-{
-	bool bPresent;
-	char strPageSize[32];	/* Flawfinder: ignore */	
-	unsigned int uiAssociativeWays;
-	unsigned int uiEntries;
-	char strTLB[128];	/* Flawfinder: ignore */	
-};
-
-struct ProcessorInfo
-{
-	char strVendor[16];	/* Flawfinder: ignore */	
-	unsigned int uiFamily;
-	unsigned int uiExtendedFamily;
-	char strFamily[64];	/* Flawfinder: ignore */	
-	unsigned int uiModel;
-	unsigned int uiExtendedModel;
-	char strModel[128];	/* Flawfinder: ignore */	
-	unsigned int uiStepping;
-	unsigned int uiType;
-	char strType[64];	/* Flawfinder: ignore */	
-	unsigned int uiBrandID;
-	char strBrandID[64];	/* Flawfinder: ignore */	
-	char strProcessorSerial[64];	/* Flawfinder: ignore */	
-	unsigned long MaxSupportedLevel;
-	unsigned long MaxSupportedExtendedLevel;
-	ProcessorExtensions _Ext;
-	ProcessorL1Cache _L1;
-	ProcessorCache _L2;
-	ProcessorCache _L3;
-	ProcessorCache _Trace;
-	ProcessorTLB _Instruction;
-	ProcessorTLB _Data;
-};
-
-
-// CProcessor
-// ==========
-// Class for detecting the processor name, type and available
-// extensions as long as it's speed.
-/////////////////////////////////////////////////////////////
-class CProcessor
-{
-// Constructor / Destructor:
-////////////////////////////
-public:
-	CProcessor();
-
-// Private vars:
-////////////////
-private:
-	F64 uqwFrequency;
-	char strCPUName[128];	/* Flawfinder: ignore */	
-	ProcessorInfo CPUInfo;
-
-// Private functions:
-/////////////////////
-private:
-	bool AnalyzeIntelProcessor();
-	bool AnalyzeAMDProcessor();
-	bool AnalyzeUnknownProcessor();
-	bool CheckCPUIDPresence();
-	void DecodeProcessorConfiguration(unsigned int cfg);
-	void TranslateProcessorConfiguration();
-	void GetStandardProcessorConfiguration();
-	void GetStandardProcessorExtensions();
-
-// Public functions:
-////////////////////
-public:
-	F64 GetCPUFrequency(unsigned int uiMeasureMSecs);
-	const ProcessorInfo *GetCPUInfo();
-	bool CPUInfoToText(char *strBuffer, unsigned int uiMaxLen);
-	bool WriteInfoTextFile(const std::string& strFilename);
-};
-
-#endif // 0
-
 #endif // LLPROCESSOR_H
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index d38fc1b013882d88d3836f4a76700e375c8c14ee..86f2736d5a4fd2dc0be24dda31ef9f47fc0b342d 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -58,7 +58,6 @@
 #	include <unistd.h>
 #	include <sys/sysinfo.h>
 const char MEMINFO_FILE[] = "/proc/meminfo";
-const char CPUINFO_FILE[] = "/proc/cpuinfo";
 #elif LL_SOLARIS
 #	include <stdio.h>
 #	include <unistd.h>
@@ -518,65 +517,16 @@ LLCPUInfo::LLCPUInfo()
 	mHasSSE = proc.hasSSE();
 	mHasSSE2 = proc.hasSSE2();
 	mHasAltivec = proc.hasAltivec();
-	mCPUMhz = (F64)(proc.getCPUFrequency()/1000000.0);
+	mCPUMHz = (F64)(proc.getCPUFrequency()/1000000.0);
 	mFamily = proc.getCPUFamilyName();
 	mCPUString = "Unknown";
 
-#if LL_WINDOWS || LL_DARWIN || LL_SOLARIS
 	out << proc.getCPUBrandName();
 	if (200 < mCPUMHz && mCPUMHz < 10000)           // *NOTE: cpu speed is often way wrong, do a sanity check
 	{
 		out << " (" << mCPUMHz << " MHz)";
 	}
 	mCPUString = out.str();
-	
-#elif LL_LINUX
-	std::map< std::string, std::string > cpuinfo;
-	LLFILE* cpuinfo_fp = LLFile::fopen(CPUINFO_FILE, "rb");
-	if(cpuinfo_fp)
-	{
-		char line[MAX_STRING];
-		memset(line, 0, MAX_STRING);
-		while(fgets(line, MAX_STRING, cpuinfo_fp))
-		{
-			// /proc/cpuinfo on Linux looks like:
-			// name\t*: value\n
-			char* tabspot = strchr( line, '\t' );
-			if (tabspot == NULL)
-				continue;
-			char* colspot = strchr( tabspot, ':' );
-			if (colspot == NULL)
-				continue;
-			char* spacespot = strchr( colspot, ' ' );
-			if (spacespot == NULL)
-				continue;
-			char* nlspot = strchr( line, '\n' );
-			if (nlspot == NULL)
-				nlspot = line + strlen( line ); // Fallback to terminating NUL
-			std::string linename( line, tabspot );
-			std::string llinename(linename);
-			LLStringUtil::toLower(llinename);
-			std::string lineval( spacespot + 1, nlspot );
-			cpuinfo[ llinename ] = lineval;
-		}
-		fclose(cpuinfo_fp);
-	}
-# if LL_X86
-	std::string flags = " " + cpuinfo["flags"] + " ";
-	LLStringUtil::toLower(flags);
-	mHasSSE = ( flags.find( " sse " ) != std::string::npos );
-	mHasSSE2 = ( flags.find( " sse2 " ) != std::string::npos );
-	
-	F64 mhz;
-	if (LLStringUtil::convertToF64(cpuinfo["cpu mhz"], mhz)
-	    && 200.0 < mhz && mhz < 10000.0)
-	{
-		mCPUMHz = (F64)(mhz);
-	}
-	if (!cpuinfo["model name"].empty())
-		mCPUString = cpuinfo["model name"];
-# endif // LL_X86
-#endif // LL_LINUX
 }
 
 bool LLCPUInfo::hasAltivec() const
@@ -606,29 +556,9 @@ std::string LLCPUInfo::getCPUString() const
 
 void LLCPUInfo::stream(std::ostream& s) const
 {
-#if LL_WINDOWS || LL_DARWIN || LL_SOLARIS
 	// gather machine information.
 	s << LLProcessorInfo().getCPUFeatureDescription();
-#else
-	// *NOTE: This works on linux. What will it do on other systems?
-	LLFILE* cpuinfo = LLFile::fopen(CPUINFO_FILE, "rb");
-	if(cpuinfo)
-	{
-		char line[MAX_STRING];
-		memset(line, 0, MAX_STRING);
-		while(fgets(line, MAX_STRING, cpuinfo))
-		{
-			line[strlen(line)-1] = ' ';
-			s << line;
-		}
-		fclose(cpuinfo);
-		s << std::endl;
-	}
-	else
-	{
-		s << "Unable to collect processor information" << std::endl;
-	}
-#endif
+
 	// These are interesting as they reflect our internal view of the
 	// CPU's attributes regardless of platform
 	s << "->mHasSSE:     " << (U32)mHasSSE << std::endl;