Re: [RFC][PATCH] PowerPC: 4xx PCIe indirect DCR spinlock fix.

2008-02-05 Thread Benjamin Herrenschmidt
On Tue, 2008-02-05 at 21:36 +0300, Valentine Barshak wrote: > Since we have mfdcri() and mtdcri() as macros, we can't use constructions, > such > as "mtdcri(base, reg, mfdcri(base, reg) | val)". In this case the mfdcri() > stuff > is not evaluated first. It's evaluated inside the mtdcri() macro

[RFC][PATCH] PowerPC: 4xx PCIe indirect DCR spinlock fix.

2008-02-05 Thread Valentine Barshak
Since we have mfdcri() and mtdcri() as macros, we can't use constructions, such as "mtdcri(base, reg, mfdcri(base, reg) | val)". In this case the mfdcri() stuff is not evaluated first. It's evaluated inside the mtdcri() macro and we have the dcr_ind_lock spinlock acquired twice. To avoid this error

Re: [RFC][PATCH] PowerPC: 4xx PCIe indirect DCR spinlock fix.

2008-02-04 Thread Benjamin Herrenschmidt
On Mon, 2008-02-04 at 21:27 +0300, Valentine Barshak wrote: > Since we have mfdcri() and mtdcri() as macros, we can't use constructions, > such > as "mtdcri(base, reg, mfdcri(base, reg) | val)". In this case the mfdcri() > stuff > is not evaluated first. It's evaluated inside the mtdcr() macro a

[RFC][PATCH] PowerPC: 4xx PCIe indirect DCR spinlock fix.

2008-02-04 Thread Valentine Barshak
Since we have mfdcri() and mtdcri() as macros, we can't use constructions, such as "mtdcri(base, reg, mfdcri(base, reg) | val)". In this case the mfdcri() stuff is not evaluated first. It's evaluated inside the mtdcr() macro and we have the dcr_ind_lock spinlock acquired twice. To avoid this error,