Commit Message

Convert variables descr, src and dest from type target_phys_addr_t to uint32_t,
use VMSTATE_UINT32 instead of VMSTATE_UINTTL for these variables.
We can do it safely because:
1) pxa2xx has 32-bit physical address;
2) rest of the code in this file treats these variables as uint32_t;
3) we shouldn't have used VMSTATE_UINTTL in the first place because this macro
is for target_ulong type (which can be different from target_phys_addr_t).
Signed-off-by: Igor Mitsyanko <i.mitsyanko@samsung.com>
---
hw/pxa2xx_dma.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)

Igor Mitsyanko <i.mitsyanko@samsung.com> wrote:
> Convert variables descr, src and dest from type target_phys_addr_t to uint32_t,> use VMSTATE_UINT32 instead of VMSTATE_UINTTL for these variables.> We can do it safely because:> 1) pxa2xx has 32-bit physical address;> 2) rest of the code in this file treats these variables as uint32_t;> 3) we shouldn't have used VMSTATE_UINTTL in the first place because this macro> is for target_ulong type (which can be different from target_phys_addr_t).
This is an incompatible change, we need to bump the version.
Looking at pxa2xx_dma_descriptor_fetch() it looks like your change is
enough:
uint32_t desc[4];
....
s->chan[ch].descr = desc[DDADR];
s->chan[ch].src = desc[DSADR];
s->chan[ch].dest = desc[DTADR];
s->chan[ch].cmd = desc[DCMD];
i.e. we always asign from a 32bit register.
In general change is not valid.
As I don't know if this device can appear as 64bit hardware, I don't
know if the change is valid and let it to the ARM gurus.
Later, Juan.

On 22 February 2012 13:47, Juan Quintela <quintela@redhat.com> wrote:
> Igor Mitsyanko <i.mitsyanko@samsung.com> wrote:>> Convert variables descr, src and dest from type target_phys_addr_t to uint32_t,>> use VMSTATE_UINT32 instead of VMSTATE_UINTTL for these variables.>> We can do it safely because:>> 1) pxa2xx has 32-bit physical address;>> 2) rest of the code in this file treats these variables as uint32_t;>> 3) we shouldn't have used VMSTATE_UINTTL in the first place because this macro>> is for target_ulong type (which can be different from target_phys_addr_t).>> This is an incompatible change, we need to bump the version.
Why? For the cases where this device is used, target_phys_addr_t is
always 32 bits so we aren't changing anything, surely?
-- PMM

Peter Maydell <peter.maydell@linaro.org> wrote:
> On 22 February 2012 13:47, Juan Quintela <quintela@redhat.com> wrote:>> Igor Mitsyanko <i.mitsyanko@samsung.com> wrote:>>> Convert variables descr, src and dest from type target_phys_addr_t>>> to uint32_t,>>> use VMSTATE_UINT32 instead of VMSTATE_UINTTL for these variables.>>> We can do it safely because:>>> 1) pxa2xx has 32-bit physical address;>>> 2) rest of the code in this file treats these variables as uint32_t;>>> 3) we shouldn't have used VMSTATE_UINTTL in the first place because this macro>>> is for target_ulong type (which can be different from target_phys_addr_t).>>>> This is an incompatible change, we need to bump the version.>> Why? For the cases where this device is used, target_phys_addr_t is> always 32 bits so we aren't changing anything, surely?
You are right, I had jsut forgot that this device is only used in ARM.
I stand corrected.
Later, Juan.