Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jan 2011 06:34:21 -0800
From:      Devesh Rai <deveshkr@marvell.com>
To:        Mark Tinguely <marktinguely@gmail.com>, "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org>
Subject:   RE: Changing virtual adress space layout
Message-ID:  <0DB595A2CB707F458400BE9663B6A7225E42E359C8@SC-VEXCH2.marvell.com>
In-Reply-To: <4D2F289C.9080908@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help


Hi Mark,

Actually I want to map large portion of RAM in kernel virtual address space=
.
To achieve this in Linux, I did following

1) boot kernel with 256M by setting CONFIG_CMDLINE=3D"mem=3D256M". This fre=
ed up more than 1GB of RAM for my module usages
2) increase KVA to 3GB by setting CONFIG_VMSPLIT_1G=3Dy ( 1G for user and 3=
GB for kernel)
3) ioremap unused RAM ( 2GB - 256MB ) into Kernel virtual address space.

Changing KERNBASE and KERNVIRTADDR "makeoption" from 0xc0000000 to 0x800000=
00 did not worked for me. Kernel hang while loading.=20

Thanks & Regards
Devesh
=20
-----Original Message-----
From: Mark Tinguely [mailto:marktinguely@gmail.com]=20
Sent: Thursday, January 13, 2011 10:00 PM
To: freebsd-arm@freebsd.org
Cc: Devesh Rai
Subject: Re: Changing virtual adress space layout

On 1/13/2011 1:30 AM, Devesh Rai wrote:
> Hi,
>
> I am new to FreeBSD. Can some tell how to change virtual address space la=
yout in FreeBSD for arm?
> For x86, KVA_PAGES=3DN option is there in FreeBSD.  In Linux, I used CONF=
IG_VMSPLIT option.
> I am looking corresponding option for arm.
>
> Regards
> Devesh

I assume you have run out of space for the device virtual addresses.

KERNBASE is hard coded in sys/arm/include/vm_param.h to be 0xc0000000.

There is a related variable for each device configuration: the =20
KERNVIRTADDR  "option" and "makeoption" values. This is usually in one=20
of the "std" file  file for the device. KERNVIRTADDR sets the starting=20
location of the executable and is sometimes different than KERNBASE.

The arm code does not map the from KERNBASE to 0xffff_ffff into the KVA.=20
Instead, there is a variable that determines the maximum size of the=20
kernel executable and kernel virtual address area. Above this defined=20
area lies the no-cache remap memory region, device map area, high=20
vector, etc.

On a tangent note: There will be a great advantage in ARMv6/ARMv7 to go=20
to a 2GB UVA / 2GB KVA.

--Mark.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0DB595A2CB707F458400BE9663B6A7225E42E359C8>