Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
4a283339
Commit
4a283339
authored
Feb 13, 2008
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC64]: Initialize MDESC earlier and use lmb_alloc()
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
ad072004
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
19 additions
and
15 deletions
+19
-15
arch/sparc64/kernel/mdesc.c
arch/sparc64/kernel/mdesc.c
+16
-12
arch/sparc64/mm/init.c
arch/sparc64/mm/init.c
+3
-3
No files found.
arch/sparc64/kernel/mdesc.c
View file @
4a283339
/* mdesc.c: Sun4V machine description handling.
/* mdesc.c: Sun4V machine description handling.
*
*
* Copyright (C) 2007 David S. Miller <davem@davemloft.net>
* Copyright (C) 2007
, 2008
David S. Miller <davem@davemloft.net>
*/
*/
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/types.h>
#include <linux/
bootmem
.h>
#include <linux/
lmb
.h>
#include <linux/log2.h>
#include <linux/log2.h>
#include <linux/list.h>
#include <linux/list.h>
#include <linux/slab.h>
#include <linux/slab.h>
...
@@ -84,24 +84,28 @@ static void mdesc_handle_init(struct mdesc_handle *hp,
...
@@ -84,24 +84,28 @@ static void mdesc_handle_init(struct mdesc_handle *hp,
hp
->
handle_size
=
handle_size
;
hp
->
handle_size
=
handle_size
;
}
}
static
struct
mdesc_handle
*
__init
mdesc_
bootmem
_alloc
(
unsigned
int
mdesc_size
)
static
struct
mdesc_handle
*
__init
mdesc_
lmb
_alloc
(
unsigned
int
mdesc_size
)
{
{
struct
mdesc_handle
*
hp
;
unsigned
int
handle_size
,
alloc_size
;
unsigned
int
handle_size
,
alloc_size
;
struct
mdesc_handle
*
hp
;
unsigned
long
paddr
;
handle_size
=
(
sizeof
(
struct
mdesc_handle
)
-
handle_size
=
(
sizeof
(
struct
mdesc_handle
)
-
sizeof
(
struct
mdesc_hdr
)
+
sizeof
(
struct
mdesc_hdr
)
+
mdesc_size
);
mdesc_size
);
alloc_size
=
PAGE_ALIGN
(
handle_size
);
alloc_size
=
PAGE_ALIGN
(
handle_size
);
hp
=
__alloc_bootmem
(
alloc_size
,
PAGE_SIZE
,
0UL
);
paddr
=
lmb_alloc
(
alloc_size
,
PAGE_SIZE
);
if
(
hp
)
mdesc_handle_init
(
hp
,
handle_size
,
hp
);
hp
=
NULL
;
if
(
paddr
)
{
hp
=
__va
(
paddr
);
mdesc_handle_init
(
hp
,
handle_size
,
hp
);
}
return
hp
;
return
hp
;
}
}
static
void
mdesc_
bootmem
_free
(
struct
mdesc_handle
*
hp
)
static
void
mdesc_
lmb
_free
(
struct
mdesc_handle
*
hp
)
{
{
unsigned
int
alloc_size
,
handle_size
=
hp
->
handle_size
;
unsigned
int
alloc_size
,
handle_size
=
hp
->
handle_size
;
unsigned
long
start
,
end
;
unsigned
long
start
,
end
;
...
@@ -124,9 +128,9 @@ static void mdesc_bootmem_free(struct mdesc_handle *hp)
...
@@ -124,9 +128,9 @@ static void mdesc_bootmem_free(struct mdesc_handle *hp)
}
}
}
}
static
struct
mdesc_mem_ops
bootmem
_mdesc_ops
=
{
static
struct
mdesc_mem_ops
lmb
_mdesc_ops
=
{
.
alloc
=
mdesc_
bootmem
_alloc
,
.
alloc
=
mdesc_
lmb
_alloc
,
.
free
=
mdesc_
bootmem
_free
,
.
free
=
mdesc_
lmb
_free
,
};
};
static
struct
mdesc_handle
*
mdesc_kmalloc
(
unsigned
int
mdesc_size
)
static
struct
mdesc_handle
*
mdesc_kmalloc
(
unsigned
int
mdesc_size
)
...
@@ -888,7 +892,7 @@ void __init sun4v_mdesc_init(void)
...
@@ -888,7 +892,7 @@ void __init sun4v_mdesc_init(void)
printk
(
"MDESC: Size is %lu bytes.
\n
"
,
len
);
printk
(
"MDESC: Size is %lu bytes.
\n
"
,
len
);
hp
=
mdesc_alloc
(
len
,
&
bootmem
_mdesc_ops
);
hp
=
mdesc_alloc
(
len
,
&
lmb
_mdesc_ops
);
if
(
hp
==
NULL
)
{
if
(
hp
==
NULL
)
{
prom_printf
(
"MDESC: alloc of %lu bytes failed.
\n
"
,
len
);
prom_printf
(
"MDESC: alloc of %lu bytes failed.
\n
"
,
len
);
prom_halt
();
prom_halt
();
...
...
arch/sparc64/mm/init.c
View file @
4a283339
...
@@ -1216,6 +1216,9 @@ void __init paging_init(void)
...
@@ -1216,6 +1216,9 @@ void __init paging_init(void)
prom_build_devicetree
();
prom_build_devicetree
();
if
(
tlb_type
==
hypervisor
)
sun4v_mdesc_init
();
/* Setup bootmem... */
/* Setup bootmem... */
pages_avail
=
0
;
pages_avail
=
0
;
last_valid_pfn
=
end_pfn
=
bootmem_init
(
&
pages_avail
,
phys_base
);
last_valid_pfn
=
end_pfn
=
bootmem_init
(
&
pages_avail
,
phys_base
);
...
@@ -1224,9 +1227,6 @@ void __init paging_init(void)
...
@@ -1224,9 +1227,6 @@ void __init paging_init(void)
kernel_physical_mapping_init
();
kernel_physical_mapping_init
();
if
(
tlb_type
==
hypervisor
)
sun4v_mdesc_init
();
{
{
unsigned
long
zones_size
[
MAX_NR_ZONES
];
unsigned
long
zones_size
[
MAX_NR_ZONES
];
unsigned
long
zholes_size
[
MAX_NR_ZONES
];
unsigned
long
zholes_size
[
MAX_NR_ZONES
];
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment