Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
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-2.6.23
Commits
e3999574
Commit
e3999574
authored
Feb 13, 2006
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC64]: Generic sun4v_build_irq().
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
10804828
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
28 deletions
+35
-28
arch/sparc64/kernel/irq.c
arch/sparc64/kernel/irq.c
+32
-0
arch/sparc64/kernel/pci_sun4v.c
arch/sparc64/kernel/pci_sun4v.c
+2
-28
include/asm-sparc64/irq.h
include/asm-sparc64/irq.h
+1
-0
No files found.
arch/sparc64/kernel/irq.c
View file @
e3999574
...
...
@@ -303,6 +303,38 @@ out:
return
__irq
(
bucket
);
}
unsigned
int
sun4v_build_irq
(
u32
devhandle
,
unsigned
int
devino
,
int
pil
,
unsigned
char
flags
)
{
struct
ino_bucket
*
bucket
;
unsigned
long
sysino
;
sysino
=
sun4v_devino_to_sysino
(
devhandle
,
devino
);
printk
(
KERN_INFO
"sun4v_irq: Mapping ( devh[%08x] devino[%08x] ) "
"--> sysino[%016lx]
\n
"
,
devhandle
,
devino
,
sysino
);
bucket
=
&
ivector_table
[
sysino
];
/* Catch accidental accesses to these things. IMAP/ICLR handling
* is done by hypervisor calls on sun4v platforms, not by direct
* register accesses.
*/
bucket
->
imap
=
~
0UL
;
bucket
->
iclr
=
~
0UL
;
bucket
->
pil
=
pil
;
bucket
->
flags
=
flags
;
bucket
->
irq_info
=
kmalloc
(
sizeof
(
struct
irq_desc
),
GFP_ATOMIC
);
if
(
!
bucket
->
irq_info
)
{
prom_printf
(
"IRQ: Error, kmalloc(irq_desc) failed.
\n
"
);
prom_halt
();
}
memset
(
bucket
->
irq_info
,
0
,
sizeof
(
struct
irq_desc
));
return
__irq
(
bucket
);
}
static
void
atomic_bucket_insert
(
struct
ino_bucket
*
bucket
)
{
unsigned
long
pstate
;
...
...
arch/sparc64/kernel/pci_sun4v.c
View file @
e3999574
...
...
@@ -644,18 +644,11 @@ static void pci_sun4v_scan_bus(struct pci_controller_info *p)
static
unsigned
int
pci_sun4v_irq_build
(
struct
pci_pbm_info
*
pbm
,
struct
pci_dev
*
pdev
,
unsigned
int
ino
)
unsigned
int
dev
ino
)
{
struct
ino_bucket
*
bucket
;
unsigned
long
sysino
;
u32
devhandle
=
pbm
->
devhandle
;
int
pil
;
sysino
=
sun4v_devino_to_sysino
(
devhandle
,
ino
);
printk
(
KERN_INFO
"pci_irq_buld: Mapping ( devh[%08x] ino[%08x] ) "
"--> sysino[%016lx]
\n
"
,
devhandle
,
ino
,
sysino
);
pil
=
4
;
if
(
pdev
)
{
switch
((
pdev
->
class
>>
16
)
&
0xff
)
{
...
...
@@ -685,26 +678,7 @@ static unsigned int pci_sun4v_irq_build(struct pci_pbm_info *pbm,
}
BUG_ON
(
PIL_RESERVED
(
pil
));
bucket
=
&
ivector_table
[
sysino
];
/* Catch accidental accesses to these things. IMAP/ICLR handling
* is done by hypervisor calls on sun4v platforms, not by direct
* register accesses.
*/
bucket
->
imap
=
~
0UL
;
bucket
->
iclr
=
~
0UL
;
bucket
->
pil
=
pil
;
bucket
->
flags
=
IBF_PCI
;
bucket
->
irq_info
=
kmalloc
(
sizeof
(
struct
irq_desc
),
GFP_ATOMIC
);
if
(
!
bucket
->
irq_info
)
{
prom_printf
(
"IRQ: Error, kmalloc(irq_desc) failed.
\n
"
);
prom_halt
();
}
memset
(
bucket
->
irq_info
,
0
,
sizeof
(
struct
irq_desc
));
return
__irq
(
bucket
);
return
sun4v_build_irq
(
devhandle
,
devino
,
pil
,
IBF_PCI
);
}
static
void
pci_sun4v_base_address_update
(
struct
pci_dev
*
pdev
,
int
resource
)
...
...
include/asm-sparc64/irq.h
View file @
e3999574
...
...
@@ -111,6 +111,7 @@ extern void disable_irq(unsigned int);
#define disable_irq_nosync disable_irq
extern
void
enable_irq
(
unsigned
int
);
extern
unsigned
int
build_irq
(
int
pil
,
int
inofixup
,
unsigned
long
iclr
,
unsigned
long
imap
);
extern
unsigned
int
sun4v_build_irq
(
u32
devhandle
,
unsigned
int
devino
,
int
pil
,
unsigned
char
flags
);
extern
unsigned
int
sbus_build_irq
(
void
*
sbus
,
unsigned
int
ino
);
static
__inline__
void
set_softint
(
unsigned
long
bits
)
...
...
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