Port-alpha archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: I did a test on a DEC AlphaStation 600 and the SCSI driver seems borked




> On Feb 17, 2026, at 6:57 AM, Magnus Lindholm <linmag7%gmail.com@localhost> wrote:
> 
>> Hm, I added support for the monster window to NetBSD/alpha in:
>> 
>> $NetBSD: tsp_dma.c,v 1.17 2021/05/27 22:11:31 thorpej Exp $
>> 
>> (Only for Tsunami, etc. systems)
>> 
> 
> This is good news! I'll have a look at the code again, I forgot which version
> I tested this on. As I understand it, in order to actually use the
> monster window
> it first must be enabled byt setting  PCTL<MWIN>. Then in order for it to be
> actually used one must enable by generating physical addresses
> that have  TSUNAMI_DAC_OFFSET (1UL << 40) (bit 40 set).

That is correct!

I described it in a comment:

 * Quoting the 21272 programmer's reference manual:
 *
 * <quote>
 * 10.1.4.4 Monster Window DMA Address Translation
 *
 * In case of a PCI dual-address cycle command, the high-order PCI address
 * bits <63:40> are compared to the constant value 0x0000_01 (that is, bit
 * <40> = 1; all other bits = 0). If these bits match, a monster window hit
 * has occurred and the low-order PCI address bits <34:0> are used unchanged
 * as the system address bits <34:0>. PCI address bits <39:35> are ignored.
 * The high-order 32 PCI address bits are available on b_ad<31:0> in the
 * second cycle of a DAC, and also on b_ad<63:32> in the first cycle of a
 * DAC if b_req64_l is asserted.
 * </quote>

>> This suggests to me that I should probably change the tsp_dma code, then, to enable and advertise the monster direct-mapped window only on systems that actually could benefit from it (i.e. systems with > 2GB RAM).
>> 
> 
> I guess the 2GB mapping comes from how Linux has organized the memory on Alpha.
> It is possible that NetBSD is doing something different here. Either
> way, it is unlikely
> that using the monster window will have any benefit on systems with
> less than 2GB RAM.

Tsunami / Typhoon / Titan have 4 DMA windows in addition to the Monster Window, and this is how they’re used on NetBSD today:

Window 0: SGMAP 8MB @ 8MB, intended for use by ISA devices that do DMA due to 24-bit addressing restriction for ISA.  This window is never handed to PCI devices, only to ISA devices.  Floppy drives and audio for the most part.

Window 1: Direct-mapped 1GB @ 2GB.

Window 2: SGMAP 1GB @ 3GB.

Window 3: currently unused.  Window 3 supports dual address cycle.

Monster Window enabled, which is why I didn’t bother with Window 3 yet.

PCI devices that can’t do 64-bit addressing on systems with > 1GB <= 2GB will automagically use the SGMAP window if their DMA request doesn’t fit into the direct-mapped window.

> My issues with tsunami based systems and the ISP1040 card was that men
> using DAC/monster
> windows (i.e addressing bit 40 was set) I would see sporadic data
> corruptions.  Always occuring
> in chunks of 64-bytes, so some DMA transfers got through, but every
> now and then data would
> get corrupted.

Huh!  That is suspiciously the size of a cache line.

-- thorpej



Home | Main Index | Thread Index | Old Index