diff mbox

[U-Boot,RFC] i2c_reloc_fixup fails on m68k

Message ID 5240473A.2040208@bus-elektronik.de
State Changes Requested
Delegated to: Heiko Schocher
Headers show

Commit Message

esw@bus-elektronik.de Sept. 23, 2013, 1:50 p.m. UTC
Hello,

I have a access violation problem with i2c_reloc_fixup on coldfire
m68k systems.

I found out, the i2c_reloc_fixup tries to relocate the adapter itself,
but at this time i2c_adap_p is already relocated.

Can anybody confirm this?

I think also m68k, backfin and nds32 systems are affected


regards

Jens

---

Comments

Heiko Schocher Sept. 24, 2013, 6:33 a.m. UTC | #1
Hello Jens,

Am 23.09.2013 15:50, schrieb Jens Scharsig:
> Hello,
>
> I have a access violation problem with i2c_reloc_fixup on coldfire
> m68k systems.
>
> I found out, the i2c_reloc_fixup tries to relocate the adapter itself,
> but at this time i2c_adap_p is already relocated.

Which toolchain?

> Can anybody confirm this?

Added Mike Frysinger, Sonic Zhang (for blackfin) Jason Jin (for m68k)
and Macpaul Lin (for nds32) to Cc ...

> I think also m68k, backfin and nds32 systems are affected

Sorry, I have no such system ... maybe you are the first who stepped
in it ...

> ---
> diff --git a/drivers/i2c/i2c_core.c b/drivers/i2c/i2c_core.c
> index d1072e8..bb5d4db 100644
> --- a/drivers/i2c/i2c_core.c
> +++ b/drivers/i2c/i2c_core.c
> @@ -53,10 +53,6 @@ void i2c_reloc_fixup(void)
>                  return;
>
>          for (i = 0; i<  max; i++) {
> -               /* adapter itself */
> -               addr = (unsigned long)i2c_adap_p;
> -               addr += gd->reloc_off;
> -               i2c_adap_p = (struct i2c_adapter *)addr;
>                  /* i2c_init() */
>                  addr = (unsigned long)i2c_adap_p->init;
>                  addr += gd->reloc_off;

bye,
Heiko
esw@bus-elektronik.de Sept. 24, 2013, 7:41 a.m. UTC | #2
Hello Heiko,
> Hello Jens,
>> I have a access violation problem with i2c_reloc_fixup on coldfire
>> m68k systems.
>>
>> I found out, the i2c_reloc_fixup tries to relocate the adapter itself,
>> but at this time i2c_adap_p is already relocated.
> 
> Which toolchain?

m68k-elf-gcc (Sourcery CodeBench Lite 2011.09-21) 4.6.1
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

> 
>> Can anybody confirm this?
> 
> Added Mike Frysinger, Sonic Zhang (for blackfin) Jason Jin (for m68k)
> and Macpaul Lin (for nds32) to Cc ...
> 
>> I think also m68k, backfin and nds32 systems are affected
> 
> Sorry, I have no such system ... maybe you are the first who stepped
> in it ...

I have only a m68k system, but only this tree arch's call i2c_reloc_fixup
in this way.

regards

Jens
Heiko Schocher Oct. 14, 2013, 5:51 a.m. UTC | #3
Hello Jens,

Am 24.09.2013 09:41, schrieb Jens Scharsig:
> Hello Heiko,
>> Hello Jens,
>>> I have a access violation problem with i2c_reloc_fixup on coldfire
>>> m68k systems.
>>>
>>> I found out, the i2c_reloc_fixup tries to relocate the adapter itself,
>>> but at this time i2c_adap_p is already relocated.
>>
>> Which toolchain?
>
> m68k-elf-gcc (Sourcery CodeBench Lite 2011.09-21) 4.6.1
> Copyright (C) 2011 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
>>
>>> Can anybody confirm this?
>>
>> Added Mike Frysinger, Sonic Zhang (for blackfin) Jason Jin (for m68k)
>> and Macpaul Lin (for nds32) to Cc ...
>>
>>> I think also m68k, backfin and nds32 systems are affected
>>
>> Sorry, I have no such system ... maybe you are the first who stepped
>> in it ...
>
> I have only a m68k system, but only this tree arch's call i2c_reloc_fixup
> in this way.

Any news here?

@Jens: I want to add this patch in the new merge window, could you send
a correct patch please, thanks!

bye,
Heiko
esw@bus-elektronik.de Oct. 14, 2013, 7:50 a.m. UTC | #4
Hello Heiko,

Am 2013-10-14 07:51, schrieb Heiko Schocher:
> Hello Jens,
> 
> Am 24.09.2013 09:41, schrieb Jens Scharsig:
>> Hello Heiko,
>>> Hello Jens,
>>>> I have a access violation problem with i2c_reloc_fixup on coldfire
>>>> m68k systems.
>>>>
>>>> I found out, the i2c_reloc_fixup tries to relocate the adapter itself,
>>>> but at this time i2c_adap_p is already relocated.
>>>
>>> Which toolchain?
>>
>> m68k-elf-gcc (Sourcery CodeBench Lite 2011.09-21) 4.6.1
>> Copyright (C) 2011 Free Software Foundation, Inc.
>> This is free software; see the source for copying conditions.  There is NO
>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>>
>>>
>>>> Can anybody confirm this?
>>>
>>> Added Mike Frysinger, Sonic Zhang (for blackfin) Jason Jin (for m68k)
>>> and Macpaul Lin (for nds32) to Cc ...
>>>
>>>> I think also m68k, backfin and nds32 systems are affected
>>>
>>> Sorry, I have no such system ... maybe you are the first who stepped
>>> in it ...
>>
>> I have only a m68k system, but only this tree arch's call i2c_reloc_fixup
>> in this way.
> 
> Any news here?

No, silence anywhere
> 
> @Jens: I want to add this patch in the new merge window, could you send
> a correct patch please, thanks!

I will do this soon.

Regards Jens
Mike Frysinger Oct. 14, 2013, 5:40 p.m. UTC | #5
On Tuesday 24 September 2013 02:33:55 Heiko Schocher wrote:
> Am 23.09.2013 15:50, schrieb Jens Scharsig:
> > Hello,
> > 
> > I have a access violation problem with i2c_reloc_fixup on coldfire
> > m68k systems.
> > 
> > I found out, the i2c_reloc_fixup tries to relocate the adapter itself,
> > but at this time i2c_adap_p is already relocated.
> 
> Which toolchain?
> 
> > Can anybody confirm this?
> 
> Added Mike Frysinger, Sonic Zhang (for blackfin) Jason Jin (for m68k)
> and Macpaul Lin (for nds32) to Cc ...
> 
> > I think also m68k, backfin and nds32 systems are affected
> 
> Sorry, I have no such system ... maybe you are the first who stepped
> in it ...

Blackfin doesn't do self-relocation like that, so we don't care :)
-mike
diff mbox

Patch

diff --git a/drivers/i2c/i2c_core.c b/drivers/i2c/i2c_core.c
index d1072e8..bb5d4db 100644
--- a/drivers/i2c/i2c_core.c
+++ b/drivers/i2c/i2c_core.c
@@ -53,10 +53,6 @@  void i2c_reloc_fixup(void)
                return;

        for (i = 0; i < max; i++) {
-               /* adapter itself */
-               addr = (unsigned long)i2c_adap_p;
-               addr += gd->reloc_off;
-               i2c_adap_p = (struct i2c_adapter *)addr;
                /* i2c_init() */
                addr = (unsigned long)i2c_adap_p->init;
                addr += gd->reloc_off;