Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90a6646b authored by David S. Miller's avatar David S. Miller
Browse files

[SPARC64]: Fix system type in /proc/cpuinfo and remove bogus OBP check.



Report 'sun4v' when appropriate in /proc/cpuinfo

Remove all the verifications of the OBP version string.  Just
make sure it's there, and report it raw in the bootup logs and
via /proc/cpuinfo.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8935dced
Loading
Loading
Loading
Loading
+6 −7
Original line number Original line Diff line number Diff line
@@ -442,9 +442,8 @@ static int show_cpuinfo(struct seq_file *m, void *__unused)
	seq_printf(m, 
	seq_printf(m, 
		   "cpu\t\t: %s\n"
		   "cpu\t\t: %s\n"
		   "fpu\t\t: %s\n"
		   "fpu\t\t: %s\n"
		   "promlib\t\t: Version 3 Revision %d\n"
		   "prom\t\t: %s\n"
		   "prom\t\t: %d.%d.%d\n"
		   "type\t\t: %s\n"
		   "type\t\t: sun4u\n"
		   "ncpus probed\t: %d\n"
		   "ncpus probed\t: %d\n"
		   "ncpus active\t: %d\n"
		   "ncpus active\t: %d\n"
		   "D$ parity tl1\t: %u\n"
		   "D$ parity tl1\t: %u\n"
@@ -456,10 +455,10 @@ static int show_cpuinfo(struct seq_file *m, void *__unused)
		   ,
		   ,
		   sparc_cpu_type,
		   sparc_cpu_type,
		   sparc_fpu_type,
		   sparc_fpu_type,
		   prom_rev,
		   prom_version,
		   prom_prev >> 16,
		   ((tlb_type == hypervisor) ?
		   (prom_prev >> 8) & 0xff,
		    "sun4v" :
		   prom_prev & 0xff,
		    "sun4u"),
		   ncpus_probed,
		   ncpus_probed,
		   num_online_cpus(),
		   num_online_cpus(),
		   dcache_parity_tl1_occurred,
		   dcache_parity_tl1_occurred,
+4 −44
Original line number Original line Diff line number Diff line
@@ -14,8 +14,8 @@
#include <asm/openprom.h>
#include <asm/openprom.h>
#include <asm/oplib.h>
#include <asm/oplib.h>


enum prom_major_version prom_vers;
/* OBP version string. */
unsigned int prom_rev, prom_prev;
char prom_version[80];


/* The root node of the prom device tree. */
/* The root node of the prom device tree. */
int prom_stdin, prom_stdout;
int prom_stdin, prom_stdout;
@@ -30,13 +30,7 @@ extern void prom_cif_init(void *, void *);


void __init prom_init(void *cif_handler, void *cif_stack)
void __init prom_init(void *cif_handler, void *cif_stack)
{
{
	char buffer[80], *p;
	int ints[3];
	int node;
	int node;
	int i = 0;
	int bufadjust;

	prom_vers = PROM_P1275;


	prom_cif_init(cif_handler, cif_stack);
	prom_cif_init(cif_handler, cif_stack);


@@ -51,44 +45,10 @@ void __init prom_init(void *cif_handler, void *cif_stack)
	if (!node || node == -1)
	if (!node || node == -1)
		prom_halt();
		prom_halt();


	prom_getstring(node, "version", buffer, sizeof (buffer));
	prom_getstring(node, "version", prom_version, sizeof(prom_version));


	prom_printf("\n");
	prom_printf("\n");


	if (strncmp(buffer, "OBP ", 4))
	printk("PROMLIB: Sun IEEE Boot Prom '%s'\n", prom_version);
		goto strange_version;

	/*
	 * Version field is expected to be 'OBP xx.yy.zz date...'
	 * However, Sun can't stick to this format very well, so
	 * we need to check for 'OBP  xx.yy.zz date...' and adjust
	 * accordingly. -spot
	 */

	if (strncmp(buffer, "OBP  ", 5))
		bufadjust = 4;
	else
		bufadjust = 5;

	p = buffer + bufadjust;
	while (p && isdigit(*p) && i < 3) {
		ints[i++] = simple_strtoul(p, NULL, 0);
		if ((p = strchr(p, '.')) != NULL)
			p++;
	}
	if (i != 3)
		goto strange_version;

	prom_rev = ints[1];
	prom_prev = (ints[0] << 16) | (ints[1] << 8) | ints[2];

	printk("PROMLIB: Sun IEEE Boot Prom %s\n", buffer + bufadjust);
	printk("PROMLIB: Root node compatible: %s\n", prom_root_compatible);
	printk("PROMLIB: Root node compatible: %s\n", prom_root_compatible);

	/* Initialization successful. */
	return;

strange_version:
	prom_printf ("Strange OBP version `%s'.\n", buffer);
	prom_halt ();
}
}
+0 −18
Original line number Original line Diff line number Diff line
@@ -112,24 +112,6 @@ unsigned char prom_get_idprom(char *idbuf, int num_bytes)
	return 0xff;
	return 0xff;
}
}


/* Get the major prom version number. */
int prom_version(void)
{
	return PROM_P1275;
}

/* Get the prom plugin-revision. */
int prom_getrev(void)
{
	return prom_rev;
}

/* Get the prom firmware print revision. */
int prom_getprev(void)
{
	return prom_prev;
}

/* Install Linux trap table so PROM uses that instead of its own. */
/* Install Linux trap table so PROM uses that instead of its own. */
void prom_set_trap_table(unsigned long tba)
void prom_set_trap_table(unsigned long tba)
{
{
+2 −21
Original line number Original line Diff line number Diff line
@@ -12,18 +12,8 @@
#include <linux/config.h>
#include <linux/config.h>
#include <asm/openprom.h>
#include <asm/openprom.h>


/* Enumeration to describe the prom major version we have detected. */
/* OBP version string. */
enum prom_major_version {
extern char prom_version[];
	PROM_V0,      /* Original sun4c V0 prom */
	PROM_V2,      /* sun4c and early sun4m V2 prom */
	PROM_V3,      /* sun4m and later, up to sun4d/sun4e machines V3 */
	PROM_P1275,   /* IEEE compliant ISA based Sun PROM, only sun4u */
        PROM_AP1000,  /* actually no prom at all */
};

extern enum prom_major_version prom_vers;
/* Revision, and firmware revision. */
extern unsigned int prom_rev, prom_prev;


/* Root node of the prom device tree, this stays constant after
/* Root node of the prom device tree, this stays constant after
 * initialization is complete.
 * initialization is complete.
@@ -133,15 +123,6 @@ extern void prom_setcallback(callback_func_t func_ptr);
 */
 */
extern unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size);
extern unsigned char prom_get_idprom(char *idp_buffer, int idpbuf_size);


/* Get the prom major version. */
extern int prom_version(void);

/* Get the prom plugin revision. */
extern int prom_getrev(void);

/* Get the prom firmware revision. */
extern int prom_getprev(void);

/* Character operations to/from the console.... */
/* Character operations to/from the console.... */


/* Non-blocking get character from console. */
/* Non-blocking get character from console. */