From: David Daney <ddaney@caviumnetworks.com>
To: post@pfrst.de, Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips <linux-mips@linux-mips.org>
Subject: Re: [PATCH] MIPS: Calculate proper ebase value for 64-bit kernels
Date: Mon, 26 Apr 2010 17:22:16 -0700 [thread overview]
Message-ID: <4BD62E38.10707@caviumnetworks.com> (raw)
In-Reply-To: <Pine.LNX.4.21.1004270049440.1248-100000@Mobile0.Peter>
On 04/26/2010 06:25 PM, post@pfrst.de wrote:
>
>
> Hi David,
>
> please excuse me, i just couldn't resist to comment on this :-)
>
> Some time ago we needed to handle multiple (virtual) address-spaces
> (in TO_CAC/TO_UNCAC as well as in virt_to_phys and the like) for
> SGI's Indigo2/R10k and Octane (neither could run a 32bit kernel).
> So in addrspace.h we provided
> #ifdef CONFIG_64BIT
> static inline unsigned long kernel_physaddr(unsigned long kva)
> {
> if((kva&0xffffffff80000000UL)==0xffffffff80000000UL)
> return CPHYSADDR(kva);
> return XPHYSADDR(kva);
> }
> #else
> #define kernel_physaddr CPHYSADDR
> #endif
> while mach-ipXX/spaces.h defined
> #define TO_PHYS(x) ( kernel_physaddr(x))
> #define TO_CAC(x) (CAC_BASE | kernel_physaddr(x))
> #define TO_UNCAC(x) (UNCAC_BASE | kernel_physaddr(x))
> which did the job.
> But at that time these defines didn't meet much acceptance for general
> use in 64bit kernels. Now, to my amusement, some modern processor
> (and/or system) seems to urge this kind of address-handling again ;-)
>
>
FWIW, that seems cleaner than what I did (actually I didn't try my
code). That should be the default definition for 64-bit kernels I think.
David Daney
> Good luck!
>
>
>
> On Mon, 26 Apr 2010, David Daney wrote:
>
>> Date: Mon, 26 Apr 2010 10:19:04 -0700
>> From: David Daney<ddaney@caviumnetworks.com>
>> To: wuzhangjin@gmail.com
>> Cc: Ralf Baechle<ralf@linux-mips.org>,
>> Thomas Bogendoerfer<tsbogend@alpha.franken.de>,
>> linux-mips@linux-mips.org
>> Subject: Re: [PATCH] MIPS: Calculate proper ebase value for 64-bit kernels
>>
>> ...
>> I don't think so. We should fix TO_UNCAC() so that it works with CKSEG0
>> addresses. It should be at physical address 0. So
>> TO_UNCAC(0xffffffff80000000), should yield 0x9000000000000000
>>
>>
>> #define TO_UNCAC(x) ({ \
>> u64 a = (u64)(x); \
>> if (a& 0xffffffffc000000 == 0xffffffff80000000) \
>> a = UNCAC_BASE | (a& 0x30000000); \
>> else \
>> a = UNCAC_BASE | (a& TO_PHYS_MASK) \
>> a; \
>> })
>>
>> David Daney
>>
>> ...
>
next parent reply other threads:[~2010-04-27 0:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.21.1004270049440.1248-100000@Mobile0.Peter>
2010-04-27 0:22 ` David Daney [this message]
2010-04-27 4:05 ` [PATCH] MIPS: Calculate proper ebase value for 64-bit kernels Wu Zhangjin
2010-04-06 20:29 David Daney
2010-04-07 15:39 ` Ralf Baechle
2010-04-13 5:03 ` Wu Zhangjin
2010-04-13 7:34 ` Thomas Bogendoerfer
2010-04-13 17:16 ` Ralf Baechle
2010-04-13 18:15 ` Thomas Bogendoerfer
2010-04-14 8:03 ` Wu Zhangjin
2010-04-14 11:24 ` Thomas Bogendoerfer
2010-04-26 12:13 ` Wu Zhangjin
2010-04-26 17:19 ` David Daney
2010-04-27 2:53 ` Wu Zhangjin
2010-04-27 23:06 ` Maciej W. Rozycki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BD62E38.10707@caviumnetworks.com \
--to=ddaney@caviumnetworks.com \
--cc=linux-mips@linux-mips.org \
--cc=post@pfrst.de \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.