Performa 475 and OpenBSD 4.0

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Performa 475 and OpenBSD 4.0

Carl Bloomsburg
I am running 4.0 on a Performa 475.  After updating my source code on
Sep 22 and rebuilding the kernel,  the keyboard no longer worked.  
After I backed out the changed made on 9/17/2006 to
src/sys/arch/mac68k/mac68k/clock.c and rebuilt the kernel, the keyboard
  then worked again.  Since I am not familiar with Mac hardware, I am
not sure if there is a configuration item that I might need to change
before using the new version of clock.c, so I thought I would ask
before submitting a bug report.

Carl Bloomsburg

dmesg:

OpenBSD 4.0 (GENERIC) #1: Sat Sep 23 03:48:58 PDT 2006
     
[hidden email]:/usr/src/sys/arch/mac68k/compile/GENERIC
Apple Macintosh LC 475, 68040 CPU+MMU+FPU, 4k on-chip physical I/D
caches
real mem = 37748736 (36864K)
avail mem = 28946432 (28268K)
using 460 buffers containing 1884160 bytes (1840K) of memory
mainbus0 (root)
obio0 at mainbus0
adb0 at obio0: Cuda
asc0 at obio0: Apple Sound Chip
macfb0 at obio0: DAFB, monitor sense 0
macfb0: 1024x768, monochrome display
wsdisplay0 at macfb0 mux 1: console (std, vt100 emulation)
esp0 at obio0 (pseudo-DMA): NCR53C96, 16MHz, SCSI ID 7
scsibus0 at esp0: 8 targets
sd0 at scsibus0 targ 0 lun 0: <SEAGATE, ST32430N, 0492> SCSI1 0/direct
fixed
sd0: 2047MB, 3992 cyl, 9 head, 116 sec, 512 bytes/sec, 4193415 sec total
cd0 at scsibus0 targ 2 lun 0: <TOSHIBA, CD-ROM XM-5201TA, 3014> SCSI2
5/cdrom removable
zsc0 at obio0
zstty0 at zsc0 channel 0
zstty1 at zsc0 channel 1
nubus0 at mainbus0
ae0 at nubus0 slot e: address 00:fe:e1:ba:d0:a7, type Farallon EtherMac
LC-TP, 64KB memory
adb0: 2 targets
akbd0 at adb0 addr 2: keyboard II
wskbd0 at akbd0: console keyboard, using wsdisplay0
ams0 at adb0 addr 3: 1-button, 100 dpi mouse
wsmouse0 at ams0 mux 0
root on sd0a swap on sd0b
rootdev=0x400 rrootdev=0xd00 rawdev=0xd02

Reply | Threaded
Open this post in threaded view
|

Re: Performa 475 and OpenBSD 4.0

Miod Vallat
> I am running 4.0 on a Performa 475.  After updating my source code on
> Sep 22 and rebuilding the kernel,  the keyboard no longer worked.  
> After I backed out the changed made on 9/17/2006 to
> src/sys/arch/mac68k/mac68k/clock.c and rebuilt the kernel, the keyboard
>  then worked again.  Since I am not familiar with Mac hardware, I am
> not sure if there is a configuration item that I might need to change
> before using the new version of clock.c, so I thought I would ask
> before submitting a bug report.

Damned. My fumble, sorry. I have reverted the problematic part of the
diff.

Can you try the following diff on your LC475 (in addition to the clock.c
revert you did), and report whether things still run ok?

Thanks,
Miod

Index: include/viareg.h
===================================================================
RCS file: /cvs/src/sys/arch/mac68k/include/viareg.h,v
retrieving revision 1.18
diff -u -p -r1.18 viareg.h
--- include/viareg.h 2006/01/13 21:02:01 1.18
+++ include/viareg.h 2006/09/26 18:20:42
@@ -212,6 +212,7 @@ typedef SLIST_HEAD(, via2hand) via2hand_
 
 void via_init(void);
 void via_powerdown(void);
+void via_set_aux_interrupts(void);
 void via_set_modem(int);
 void add_nubus_intr(int, int (*)(void *), void *, const char *);
 void enable_nubus_intr(void);
Index: mac68k/machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/mac68k/mac68k/machdep.c,v
retrieving revision 1.134
diff -u -p -r1.134 machdep.c
--- mac68k/machdep.c 2006/09/22 22:15:19 1.134
+++ mac68k/machdep.c 2006/09/26 18:20:43
@@ -391,6 +391,7 @@ cpu_startup(void)
  */
  printf(version);
  identifycpu();
+ via_set_aux_interrupts();
 
  vers = mac68k_machine.booter_version;
  if (vers < CURRENTBOOTERVER) {
@@ -1586,14 +1587,6 @@ setmachdep()
  mac68k_machine.scsi96 = 1;
  via_reg(VIA1, vIER) = 0x7f; /* disable VIA1 int */
  via_reg(VIA2, vIER) = 0x7f; /* disable VIA2 int */
-
- /* Enable A/UX interrupt scheme */
- mac68k_machine.aux_interrupts = 1;
- via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
- via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
- mac68k_machine.via1_ipl = 6;
- mac68k_machine.via2_ipl = 2;
-
  break;
  case MACH_CLASSAV:
  VIA2 = VIA2OFF;
Index: mac68k/via.c
===================================================================
RCS file: /cvs/src/sys/arch/mac68k/mac68k/via.c,v
retrieving revision 1.28
diff -u -p -r1.28 via.c
--- mac68k/via.c 2006/06/30 15:12:47 1.28
+++ mac68k/via.c 2006/09/26 18:20:44
@@ -175,6 +175,28 @@ via_init()
 }
 
 /*
+ * Enable A/UX style interrupt scheme now if this model supports it.
+ */
+void
+via_set_aux_interrupts()
+{
+ switch (current_mac_model->class) {
+ case MACH_CLASSQ:
+ case MACH_CLASSQ2:
+ mac68k_machine.aux_interrupts = 1;
+ via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
+ via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
+
+ intr_disestablish(mac68k_machine.via1_ipl);
+ mac68k_machine.via1_ipl = 6;
+ intr_establish(via1_intr, NULL, mac68k_machine.via1_ipl, "via1");
+ /* mac68k_machine.via2_ipl = 2; unchanged */
+ intr_init();
+ break;
+ }
+}
+
+/*
  * Set the state of the modem serial port's clock source.
  */
 void

Reply | Threaded
Open this post in threaded view
|

Re: Performa 475 and OpenBSD 4.0

Carl Bloomsburg
The kernel using the diff you provided below is running great so far.

Carl

On Sep 26, 2006, at 11:26 AM, Miod Vallat wrote:

>> I am running 4.0 on a Performa 475.  After updating my source code on
>> Sep 22 and rebuilding the kernel,  the keyboard no longer worked.
>> After I backed out the changed made on 9/17/2006 to
>> src/sys/arch/mac68k/mac68k/clock.c and rebuilt the kernel, the
>> keyboard
>>  then worked again.  Since I am not familiar with Mac hardware, I am
>> not sure if there is a configuration item that I might need to change
>> before using the new version of clock.c, so I thought I would ask
>> before submitting a bug report.
>
> Damned. My fumble, sorry. I have reverted the problematic part of the
> diff.
>
> Can you try the following diff on your LC475 (in addition to the
> clock.c
> revert you did), and report whether things still run ok?
>
> Thanks,
> Miod
>
> Index: include/viareg.h
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/include/viareg.h,v
> retrieving revision 1.18
> diff -u -p -r1.18 viareg.h
> --- include/viareg.h 2006/01/13 21:02:01 1.18
> +++ include/viareg.h 2006/09/26 18:20:42
> @@ -212,6 +212,7 @@ typedef SLIST_HEAD(, via2hand) via2hand_
>
>  void via_init(void);
>  void via_powerdown(void);
> +void via_set_aux_interrupts(void);
>  void via_set_modem(int);
>  void add_nubus_intr(int, int (*)(void *), void *, const char *);
>  void enable_nubus_intr(void);
> Index: mac68k/machdep.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/mac68k/machdep.c,v
> retrieving revision 1.134
> diff -u -p -r1.134 machdep.c
> --- mac68k/machdep.c 2006/09/22 22:15:19 1.134
> +++ mac68k/machdep.c 2006/09/26 18:20:43
> @@ -391,6 +391,7 @@ cpu_startup(void)
>   */
>   printf(version);
>   identifycpu();
> + via_set_aux_interrupts();
>
>   vers = mac68k_machine.booter_version;
>   if (vers < CURRENTBOOTERVER) {
> @@ -1586,14 +1587,6 @@ setmachdep()
>   mac68k_machine.scsi96 = 1;
>   via_reg(VIA1, vIER) = 0x7f; /* disable VIA1 int */
>   via_reg(VIA2, vIER) = 0x7f; /* disable VIA2 int */
> -
> - /* Enable A/UX interrupt scheme */
> - mac68k_machine.aux_interrupts = 1;
> - via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
> - via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
> - mac68k_machine.via1_ipl = 6;
> - mac68k_machine.via2_ipl = 2;
> -
>   break;
>   case MACH_CLASSAV:
>   VIA2 = VIA2OFF;
> Index: mac68k/via.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/mac68k/via.c,v
> retrieving revision 1.28
> diff -u -p -r1.28 via.c
> --- mac68k/via.c 2006/06/30 15:12:47 1.28
> +++ mac68k/via.c 2006/09/26 18:20:44
> @@ -175,6 +175,28 @@ via_init()
>  }
>
>  /*
> + * Enable A/UX style interrupt scheme now if this model supports it.
> + */
> +void
> +via_set_aux_interrupts()
> +{
> + switch (current_mac_model->class) {
> + case MACH_CLASSQ:
> + case MACH_CLASSQ2:
> + mac68k_machine.aux_interrupts = 1;
> + via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
> + via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
> +
> + intr_disestablish(mac68k_machine.via1_ipl);
> + mac68k_machine.via1_ipl = 6;
> + intr_establish(via1_intr, NULL, mac68k_machine.via1_ipl, "via1");
> + /* mac68k_machine.via2_ipl = 2; unchanged */
> + intr_init();
> + break;
> + }
> +}
> +
> +/*
>   * Set the state of the modem serial port's clock source.
>   */
>  void

Reply | Threaded
Open this post in threaded view
|

Re: Performa 475 and OpenBSD 4.0

Carl Bloomsburg
Using the diff that you gave previously, and changing mac68k/clock.c to
the most recent version that
is in CVS, I was able to compile the kernel, and then compile the
OpenBSD 4.0 userland on the
Performa 475, with everything working the way I expect it to.  It took
five days to compile
the userland code with /usr/src and /usr/obj on an NFS mount, since the
hard disk I have is too small
otherwise.

Carl

On Sep 27, 2006, at 6:46 AM, Carl Bloomsburg wrote:

> The kernel using the diff you provided below is running great so far.
>
> Carl
>
> On Sep 26, 2006, at 11:26 AM, Miod Vallat wrote:
>
>>> I am running 4.0 on a Performa 475.  After updating my source code on
>>> Sep 22 and rebuilding the kernel,  the keyboard no longer worked.
>>> After I backed out the changed made on 9/17/2006 to
>>> src/sys/arch/mac68k/mac68k/clock.c and rebuilt the kernel, the
>>> keyboard
>>>  then worked again.  Since I am not familiar with Mac hardware, I am
>>> not sure if there is a configuration item that I might need to change
>>> before using the new version of clock.c, so I thought I would ask
>>> before submitting a bug report.
>>
>> Damned. My fumble, sorry. I have reverted the problematic part of the
>> diff.
>>
>> Can you try the following diff on your LC475 (in addition to the
>> clock.c
>> revert you did), and report whether things still run ok?
>>
>> Thanks,
>> Miod
>>
>> Index: include/viareg.h
>> ===================================================================
>> RCS file: /cvs/src/sys/arch/mac68k/include/viareg.h,v
>> retrieving revision 1.18
>> diff -u -p -r1.18 viareg.h
>> --- include/viareg.h 2006/01/13 21:02:01 1.18
>> +++ include/viareg.h 2006/09/26 18:20:42
>> @@ -212,6 +212,7 @@ typedef SLIST_HEAD(, via2hand) via2hand_
>>
>>  void via_init(void);
>>  void via_powerdown(void);
>> +void via_set_aux_interrupts(void);
>>  void via_set_modem(int);
>>  void add_nubus_intr(int, int (*)(void *), void *, const char *);
>>  void enable_nubus_intr(void);
>> Index: mac68k/machdep.c
>> ===================================================================
>> RCS file: /cvs/src/sys/arch/mac68k/mac68k/machdep.c,v
>> retrieving revision 1.134
>> diff -u -p -r1.134 machdep.c
>> --- mac68k/machdep.c 2006/09/22 22:15:19 1.134
>> +++ mac68k/machdep.c 2006/09/26 18:20:43
>> @@ -391,6 +391,7 @@ cpu_startup(void)
>>   */
>>   printf(version);
>>   identifycpu();
>> + via_set_aux_interrupts();
>>
>>   vers = mac68k_machine.booter_version;
>>   if (vers < CURRENTBOOTERVER) {
>> @@ -1586,14 +1587,6 @@ setmachdep()
>>   mac68k_machine.scsi96 = 1;
>>   via_reg(VIA1, vIER) = 0x7f; /* disable VIA1 int */
>>   via_reg(VIA2, vIER) = 0x7f; /* disable VIA2 int */
>> -
>> - /* Enable A/UX interrupt scheme */
>> - mac68k_machine.aux_interrupts = 1;
>> - via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
>> - via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
>> - mac68k_machine.via1_ipl = 6;
>> - mac68k_machine.via2_ipl = 2;
>> -
>>   break;
>>   case MACH_CLASSAV:
>>   VIA2 = VIA2OFF;
>> Index: mac68k/via.c
>> ===================================================================
>> RCS file: /cvs/src/sys/arch/mac68k/mac68k/via.c,v
>> retrieving revision 1.28
>> diff -u -p -r1.28 via.c
>> --- mac68k/via.c 2006/06/30 15:12:47 1.28
>> +++ mac68k/via.c 2006/09/26 18:20:44
>> @@ -175,6 +175,28 @@ via_init()
>>  }
>>
>>  /*
>> + * Enable A/UX style interrupt scheme now if this model supports it.
>> + */
>> +void
>> +via_set_aux_interrupts()
>> +{
>> + switch (current_mac_model->class) {
>> + case MACH_CLASSQ:
>> + case MACH_CLASSQ2:
>> + mac68k_machine.aux_interrupts = 1;
>> + via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
>> + via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
>> +
>> + intr_disestablish(mac68k_machine.via1_ipl);
>> + mac68k_machine.via1_ipl = 6;
>> + intr_establish(via1_intr, NULL, mac68k_machine.via1_ipl, "via1");
>> + /* mac68k_machine.via2_ipl = 2; unchanged */
>> + intr_init();
>> + break;
>> + }
>> +}
>> +
>> +/*
>>   * Set the state of the modem serial port's clock source.
>>   */
>>  void