Re: [PATCH 2/2] m68k/amiga - Zorro ESP: new zorro_esp.c

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

 



Hi Finn, Geert,

+       /* We are passed DMA addresses i.e. physical addresses, but must use
+        * kernel virtual addresses here, so remap to virtual. This is easy
+        * enough for the case of residual bytes of an extended message in
+        * transfer - we know the address must be esp->command_block_dma.
+        * In other cases, hope that phys_to_virt() works ...
+        */
+       if (addr == esp->command_block_dma)
+               addr = (u32) esp->command_block;
+       else
+               addr = (u32) phys_to_virt(addr);

To avoid having a need for phys_to_virt(), you should remember the 
addresses passed to/returned from dma_map_*().

Interesting - can we be certain that only one mapping is being used at 
any one time?

Tests have revealed that we can't rely on a single mapping active at any
one time (it's rare, but I get some messages printed when I log
zorro_esp_map_single() being called with a mapping already saved).



I don't know how Geert's suggestion would work in this case. But I think 

I suppose storing the virtual address in the driver private data struct,
and looking up that stored virtual address in the PIO transfer function.

we covered this problem back in December: 
https://marc.info/?l=linux-m68k&m=151365452606870

(That thread also helps explain the PIO vs. ESP_CMD_SELAS issue.)

Yes, rereading that thread now suggests we had explored a few options
but the issue of autosense commands was making it a little too complicated.

We have no need to find out the correct virtual address for a given DMA
mapping as long as we only use PIO for message byte transfer. I'll leave
finding a proper solution for a rainy day (or rather, a few rainy
weeks). Anyone familiar with Auckland will know what that means :-)

Cheers,

	Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux