[Cbe-oss-dev] elaboration of Axon driver?

Arnd Bergmann arnd at arndb.de
Fri Dec 19 00:36:01 EST 2008


On Thursday 18 December 2008, Marcus G. Daniels wrote:
> I wish it were easier to understand exactly what DaCS is doing.   For 
> example, even with the raw Axon driver, when I swap from having the 
> Opteron be the local and the Cell be the remote, to having the Cell be 
> the local and the Opteron the remote, I get an error on the Cell side 
> that says "Bad remote PLB5 address 0xa00000a500000018".   That seems to 
> be some magic address of the Axon, but if I'm mis-using the interfaces 
> it isn't obvious how! 

No, this is an internal check in the device driver.  0xa00000a500000018
should be the Opteron's SMA region as seen from Axon. 

The check is in this function in the kernel driver:

/**
 * dmax_validate_plb5 - check if the passed plb5 address is valid
 * @axon_priv:
 * @addr:
 */
static inline int dmax_validate_plb5(struct axon *axon_priv, u64 addr)
{
­·······u64 mask = 0xFFF0000000000000ul;

­·······if ((addr & mask) == (axon_priv->remote_plb5_base_addr & mask)) {
­·······­·······return 0;
­·······}
­·······if ((addr & mask) == (axon_priv->local_phys_plb5_addr & mask)) {
­·······­·······return 0;
­·······}
­·······if ((addr & mask) == (axon_priv->remote_apnet_plb5_addr & mask)) {
­·······­·······return 0;
­·······}
­·······if ((addr & mask) == (axon_priv->remote_sma_plb5_addr & mask)) {
­·······­·······return 0;
­·······}

­·······printk(KERN_ERR "Bad remote PLB5 address 0x%p\n", (void *)addr);
­·······return -EFAULT;
}

I can't currently reproduce the problem here, but it would be interesting
to instrument the device driver to check how this happened. The specific
address should be used when you ask for a dma with 'remote status update'.

	Arnd <><



More information about the cbe-oss-dev mailing list