Date: Mon, 23 Oct 2000 17:55:03 -0700 (PDT) From: Jim.Pirzyk@disney.com To: FreeBSD-gnats-submit@freebsd.org Subject: alpha/22263: Additions to OSF1 emulation module Message-ID: <200010240055.RAA03772@beta.fan.fa.disney.com>
next in thread | raw e-mail | index | archive | help
>Number: 22263 >Category: alpha >Synopsis: OSF1 Module needed some more getsysinfo op codes implemented >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-alpha >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Oct 23 18:00:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Jim Pirzyk >Release: FreeBSD 4.1-RELEASE alpha >Organization: >Environment: FreeBSD 4.1-RELEASE on a Alpha DS20 >Description: shake uses the following osf1_getsysinfo op codes (19, 30, 55, 59, 103) from /var/log/messages: Oct 20 20:30:15 <kern.crit> beta /kernel: osf1_getsysinfo called with unknown op=103 Oct 20 20:30:15 <kern.crit> beta /kernel: osf1_getsysinfo called with unknown op=59 Oct 20 20:30:15 <kern.crit> beta /kernel: osf1_getsysinfo called with unknown op=30 Oct 20 20:30:15 <kern.crit> beta /kernel: osf1_getsysinfo called with unknown op=55 Oct 20 20:30:15 <kern.crit> beta /kernel: osf1_getsysinfo called with unknown op=19 Oct 21 10:34:34 <kern.crit> beta /kernel: osf1_getsysinfo called with unknown op=59 >How-To-Repeat: run shake on a freebsd alpha system >Fix: *** osf1.h.orig Wed Jan 5 18:37:45 2000 --- osf1.h Sat Oct 21 10:39:06 2000 *************** *** 45,54 **** #define OSF1_IOCCMD(x) ((x) & 0xff) /* for get sysinfo */ ! #define OSF_GET_MAX_UPROCS 2 ! #define OSF_GET_IEEE_FP_CONTROL 45 ! #define OSF_GET_PROC_TYPE 60 #define OSF_GET_HWRPB 101 /* for set sysinfo */ #define OSF_SET_IEEE_FP_CONTROL 14 --- 45,59 ---- #define OSF1_IOCCMD(x) ((x) & 0xff) /* for get sysinfo */ ! #define OSF_GET_MAX_UPROCS 2 ! #define OSF_GET_PHYSMEM 19 ! #define OSF_GET_MAX_CPU 30 ! #define OSF_GET_IEEE_FP_CONTROL 45 ! #define OSF_GET_CPUS_IN_BOX 55 ! #define OSF_GET_CPU_INFO 59 ! #define OSF_GET_PROC_TYPE 60 #define OSF_GET_HWRPB 101 + #define OSF_GET_PLATFORM_NAME 103 /* for set sysinfo */ #define OSF_SET_IEEE_FP_CONTROL 14 *** osf1_misc.c.orig Fri Jan 28 22:31:27 2000 --- osf1_misc.c Sat Oct 21 11:06:18 2000 *************** *** 268,273 **** --- 268,278 ---- struct osf1_getsysinfo_args *uap; { int error, retval; + extern char cpu_model[128]; + extern int ncpus; + int unit; + long percpu; + long proctype; error = retval = 0; *************** *** 277,292 **** sizeof(maxprocperuid)); retval = 1; break; case OSF_GET_IEEE_FP_CONTROL: error = copyout(&p->p_addr->u_pcb.pcb_fp_control,uap->buffer, sizeof(p->p_addr->u_pcb.pcb_fp_control)); retval = 1; break; ! case OSF_GET_PROC_TYPE: { ! int unit; ! long percpu; ! long proctype; if(uap->nbytes < sizeof(proctype)) error = EINVAL; else { --- 282,328 ---- sizeof(maxprocperuid)); retval = 1; break; + case OSF_GET_PHYSMEM: + error = copyout(&physmem, uap->buffer, + sizeof(physmem)); + retval = 1; + break; + case OSF_GET_MAX_CPU: + case OSF_GET_CPUS_IN_BOX: + error = copyout(&ncpus, uap->buffer, + sizeof(ncpus)); + retval = 1; + break; case OSF_GET_IEEE_FP_CONTROL: error = copyout(&p->p_addr->u_pcb.pcb_fp_control,uap->buffer, sizeof(p->p_addr->u_pcb.pcb_fp_control)); retval = 1; break; ! case OSF_GET_CPU_INFO: { ! struct osf1_cpu_info cpuinfo; ! ! cpuinfo.current_cpu = 0; ! cpuinfo.cpus_in_box = ncpus; ! ! if(uap->nbytes < sizeof(proctype)) ! error = EINVAL; ! else { ! unit = alpha_pal_whami(); ! cpuinfo.cpu_type = LOCATE_PCS(hwrpb, unit)->pcs_proc_type; ! } + cpuinfo.ncpus = ncpus; + cpuinfo.cpus_present = ncpus; + cpuinfo.cpus_running = ncpus; + cpuinfo.cpu_binding = 1; + cpuinfo.cpu_ex_binding = 0; + cpuinfo.mhz = hwrpb->rpb_cc_freq / 1000000; + error = copyout(&cpuinfo, uap->buffer, + sizeof(cpuinfo)); + retval = 1; + } + break; + case OSF_GET_PROC_TYPE: { if(uap->nbytes < sizeof(proctype)) error = EINVAL; else { *************** *** 312,317 **** --- 348,357 ---- retval = 1; } } + break; + case OSF_GET_PLATFORM_NAME: + error = copyout(cpu_model, uap->buffer, sizeof(cpu_model)); + retval = 1; break; default: printf("osf1_getsysinfo called with unknown op=%ld\n", uap->op); *** osf1_proto.h.orig Tue Dec 14 14:37:08 1999 --- osf1_proto.h Sat Oct 21 10:44:53 2000 *************** *** 277,282 **** --- 277,296 ---- caddr_t arg; char arg_[PAD_(caddr_t)]; u_long flag; char flag_[PAD_(u_long)]; }; + + struct osf1_cpu_info { + int current_cpu; + int cpus_in_box; + int cpu_type; + int ncpus; + u_long cpus_present; + u_long cpus_running; + u_long cpu_binding; + u_long cpu_ex_binding; + int mhz; + int unused[3]; /* future expansion */ + }; + struct osf1_setsysinfo_args { u_long op; char op_[PAD_(u_long)]; caddr_t buffer; char buffer_[PAD_(caddr_t)]; >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200010240055.RAA03772>