Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
0c6f8a8b
Commit
0c6f8a8b
authored
Mar 28, 2011
by
Thomas Gleixner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
genirq: Remove compat code
Signed-off-by:
Thomas Gleixner
<
tglx@linutronix.de
>
parent
dced35ae
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
25 additions
and
452 deletions
+25
-452
include/linux/irq.h
include/linux/irq.h
+0
-117
include/linux/irqdesc.h
include/linux/irqdesc.h
+1
-59
kernel/irq/Kconfig
kernel/irq/Kconfig
+0
-4
kernel/irq/autoprobe.c
kernel/irq/autoprobe.c
+1
-3
kernel/irq/chip.c
kernel/irq/chip.c
+0
-129
kernel/irq/compat.h
kernel/irq/compat.h
+0
-72
kernel/irq/debug.h
kernel/irq/debug.h
+1
-1
kernel/irq/dummychip.c
kernel/irq/dummychip.c
+0
-9
kernel/irq/handle.c
kernel/irq/handle.c
+0
-3
kernel/irq/internals.h
kernel/irq/internals.h
+0
-10
kernel/irq/manage.c
kernel/irq/manage.c
+1
-9
kernel/irq/resend.c
kernel/irq/resend.c
+0
-1
kernel/irq/settings.h
kernel/irq/settings.h
+21
-34
kernel/irq/spurious.c
kernel/irq/spurious.c
+0
-1
No files found.
include/linux/irq.h
View file @
0c6f8a8b
...
@@ -92,18 +92,6 @@ enum {
...
@@ -92,18 +92,6 @@ enum {
IRQ_NO_BALANCING
=
(
1
<<
13
),
IRQ_NO_BALANCING
=
(
1
<<
13
),
IRQ_MOVE_PCNTXT
=
(
1
<<
14
),
IRQ_MOVE_PCNTXT
=
(
1
<<
14
),
IRQ_NESTED_THREAD
=
(
1
<<
15
),
IRQ_NESTED_THREAD
=
(
1
<<
15
),
#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
IRQ_INPROGRESS
=
(
1
<<
16
),
IRQ_REPLAY
=
(
1
<<
17
),
IRQ_WAITING
=
(
1
<<
18
),
IRQ_DISABLED
=
(
1
<<
19
),
IRQ_PENDING
=
(
1
<<
20
),
IRQ_MASKED
=
(
1
<<
21
),
IRQ_MOVE_PENDING
=
(
1
<<
22
),
IRQ_AFFINITY_SET
=
(
1
<<
23
),
IRQ_WAKEUP
=
(
1
<<
24
),
#endif
};
};
#define IRQF_MODIFY_MASK \
#define IRQF_MODIFY_MASK \
...
@@ -321,28 +309,6 @@ static inline void irqd_clr_chained_irq_inprogress(struct irq_data *d)
...
@@ -321,28 +309,6 @@ static inline void irqd_clr_chained_irq_inprogress(struct irq_data *d)
*/
*/
struct
irq_chip
{
struct
irq_chip
{
const
char
*
name
;
const
char
*
name
;
#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
unsigned
int
(
*
startup
)(
unsigned
int
irq
);
void
(
*
shutdown
)(
unsigned
int
irq
);
void
(
*
enable
)(
unsigned
int
irq
);
void
(
*
disable
)(
unsigned
int
irq
);
void
(
*
ack
)(
unsigned
int
irq
);
void
(
*
mask
)(
unsigned
int
irq
);
void
(
*
mask_ack
)(
unsigned
int
irq
);
void
(
*
unmask
)(
unsigned
int
irq
);
void
(
*
eoi
)(
unsigned
int
irq
);
void
(
*
end
)(
unsigned
int
irq
);
int
(
*
set_affinity
)(
unsigned
int
irq
,
const
struct
cpumask
*
dest
);
int
(
*
retrigger
)(
unsigned
int
irq
);
int
(
*
set_type
)(
unsigned
int
irq
,
unsigned
int
flow_type
);
int
(
*
set_wake
)(
unsigned
int
irq
,
unsigned
int
on
);
void
(
*
bus_lock
)(
unsigned
int
irq
);
void
(
*
bus_sync_unlock
)(
unsigned
int
irq
);
#endif
unsigned
int
(
*
irq_startup
)(
struct
irq_data
*
data
);
unsigned
int
(
*
irq_startup
)(
struct
irq_data
*
data
);
void
(
*
irq_shutdown
)(
struct
irq_data
*
data
);
void
(
*
irq_shutdown
)(
struct
irq_data
*
data
);
void
(
*
irq_enable
)(
struct
irq_data
*
data
);
void
(
*
irq_enable
)(
struct
irq_data
*
data
);
...
@@ -589,89 +555,6 @@ static inline struct msi_desc *irq_data_get_msi(struct irq_data *d)
...
@@ -589,89 +555,6 @@ static inline struct msi_desc *irq_data_get_msi(struct irq_data *d)
return
d
->
msi_desc
;
return
d
->
msi_desc
;
}
}
#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
/* Please do not use: Use the replacement functions instead */
static
inline
int
set_irq_chip
(
unsigned
int
irq
,
struct
irq_chip
*
chip
)
{
return
irq_set_chip
(
irq
,
chip
);
}
static
inline
int
set_irq_data
(
unsigned
int
irq
,
void
*
data
)
{
return
irq_set_handler_data
(
irq
,
data
);
}
static
inline
int
set_irq_chip_data
(
unsigned
int
irq
,
void
*
data
)
{
return
irq_set_chip_data
(
irq
,
data
);
}
static
inline
int
set_irq_type
(
unsigned
int
irq
,
unsigned
int
type
)
{
return
irq_set_irq_type
(
irq
,
type
);
}
static
inline
int
set_irq_msi
(
unsigned
int
irq
,
struct
msi_desc
*
entry
)
{
return
irq_set_msi_desc
(
irq
,
entry
);
}
static
inline
struct
irq_chip
*
get_irq_chip
(
unsigned
int
irq
)
{
return
irq_get_chip
(
irq
);
}
static
inline
void
*
get_irq_chip_data
(
unsigned
int
irq
)
{
return
irq_get_chip_data
(
irq
);
}
static
inline
void
*
get_irq_data
(
unsigned
int
irq
)
{
return
irq_get_handler_data
(
irq
);
}
static
inline
void
*
irq_data_get_irq_data
(
struct
irq_data
*
d
)
{
return
irq_data_get_irq_handler_data
(
d
);
}
static
inline
struct
msi_desc
*
get_irq_msi
(
unsigned
int
irq
)
{
return
irq_get_msi_desc
(
irq
);
}
static
inline
void
set_irq_noprobe
(
unsigned
int
irq
)
{
irq_set_noprobe
(
irq
);
}
static
inline
void
set_irq_probe
(
unsigned
int
irq
)
{
irq_set_probe
(
irq
);
}
static
inline
void
set_irq_nested_thread
(
unsigned
int
irq
,
int
nest
)
{
irq_set_nested_thread
(
irq
,
nest
);
}
static
inline
void
set_irq_chip_and_handler_name
(
unsigned
int
irq
,
struct
irq_chip
*
chip
,
irq_flow_handler_t
handle
,
const
char
*
name
)
{
irq_set_chip_and_handler_name
(
irq
,
chip
,
handle
,
name
);
}
static
inline
void
set_irq_chip_and_handler
(
unsigned
int
irq
,
struct
irq_chip
*
chip
,
irq_flow_handler_t
handle
)
{
irq_set_chip_and_handler
(
irq
,
chip
,
handle
);
}
static
inline
void
__set_irq_handler
(
unsigned
int
irq
,
irq_flow_handler_t
handle
,
int
is_chained
,
const
char
*
name
)
{
__irq_set_handler
(
irq
,
handle
,
is_chained
,
name
);
}
static
inline
void
set_irq_handler
(
unsigned
int
irq
,
irq_flow_handler_t
handle
)
{
irq_set_handler
(
irq
,
handle
);
}
static
inline
void
set_irq_chained_handler
(
unsigned
int
irq
,
irq_flow_handler_t
handle
)
{
irq_set_chained_handler
(
irq
,
handle
);
}
#endif
int
irq_alloc_descs
(
int
irq
,
unsigned
int
from
,
unsigned
int
cnt
,
int
node
);
int
irq_alloc_descs
(
int
irq
,
unsigned
int
from
,
unsigned
int
cnt
,
int
node
);
void
irq_free_descs
(
unsigned
int
irq
,
unsigned
int
cnt
);
void
irq_free_descs
(
unsigned
int
irq
,
unsigned
int
cnt
);
int
irq_reserve_irqs
(
unsigned
int
from
,
unsigned
int
cnt
);
int
irq_reserve_irqs
(
unsigned
int
from
,
unsigned
int
cnt
);
...
...
include/linux/irqdesc.h
View file @
0c6f8a8b
...
@@ -35,32 +35,7 @@ struct timer_rand_state;
...
@@ -35,32 +35,7 @@ struct timer_rand_state;
* @name: flow handler name for /proc/interrupts output
* @name: flow handler name for /proc/interrupts output
*/
*/
struct
irq_desc
{
struct
irq_desc
{
#ifdef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
struct
irq_data
irq_data
;
struct
irq_data
irq_data
;
#else
/*
* This union will go away, once we fixed the direct access to
* irq_desc all over the place. The direct fields are a 1:1
* overlay of irq_data.
*/
union
{
struct
irq_data
irq_data
;
struct
{
unsigned
int
irq
;
unsigned
int
node
;
unsigned
int
pad_do_not_even_think_about_it
;
struct
irq_chip
*
chip
;
void
*
handler_data
;
void
*
chip_data
;
struct
msi_desc
*
msi_desc
;
#ifdef CONFIG_SMP
cpumask_var_t
affinity
;
#endif
};
};
#endif
struct
timer_rand_state
*
timer_rand_state
;
struct
timer_rand_state
*
timer_rand_state
;
unsigned
int
__percpu
*
kstat_irqs
;
unsigned
int
__percpu
*
kstat_irqs
;
irq_flow_handler_t
handle_irq
;
irq_flow_handler_t
handle_irq
;
...
@@ -68,11 +43,7 @@ struct irq_desc {
...
@@ -68,11 +43,7 @@ struct irq_desc {
irq_preflow_handler_t
preflow_handler
;
irq_preflow_handler_t
preflow_handler
;
#endif
#endif
struct
irqaction
*
action
;
/* IRQ action list */
struct
irqaction
*
action
;
/* IRQ action list */
#ifdef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
unsigned
int
status_use_accessors
;
unsigned
int
status_use_accessors
;
#else
unsigned
int
status
;
/* IRQ status */
#endif
unsigned
int
core_internal_state__do_not_mess_with_it
;
unsigned
int
core_internal_state__do_not_mess_with_it
;
unsigned
int
depth
;
/* nested irq disables */
unsigned
int
depth
;
/* nested irq disables */
unsigned
int
wake_depth
;
/* nested wake enables */
unsigned
int
wake_depth
;
/* nested wake enables */
...
@@ -127,27 +98,6 @@ static inline struct msi_desc *irq_desc_get_msi_desc(struct irq_desc *desc)
...
@@ -127,27 +98,6 @@ static inline struct msi_desc *irq_desc_get_msi_desc(struct irq_desc *desc)
return
desc
->
irq_data
.
msi_desc
;
return
desc
->
irq_data
.
msi_desc
;
}
}
#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
static
inline
struct
irq_chip
*
get_irq_desc_chip
(
struct
irq_desc
*
desc
)
{
return
irq_desc_get_chip
(
desc
);
}
static
inline
void
*
get_irq_desc_data
(
struct
irq_desc
*
desc
)
{
return
irq_desc_get_handler_data
(
desc
);
}
static
inline
void
*
get_irq_desc_chip_data
(
struct
irq_desc
*
desc
)
{
return
irq_desc_get_chip_data
(
desc
);
}
static
inline
struct
msi_desc
*
get_irq_desc_msi
(
struct
irq_desc
*
desc
)
{
return
irq_desc_get_msi_desc
(
desc
);
}
#endif
/*
/*
* Architectures call this to let the generic IRQ layer
* Architectures call this to let the generic IRQ layer
* handle an interrupt. If the descriptor is attached to an
* handle an interrupt. If the descriptor is attached to an
...
@@ -194,21 +144,13 @@ __irq_set_chip_handler_name_locked(unsigned int irq, struct irq_chip *chip,
...
@@ -194,21 +144,13 @@ __irq_set_chip_handler_name_locked(unsigned int irq, struct irq_chip *chip,
desc
->
name
=
name
;
desc
->
name
=
name
;
}
}
#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
static
inline
void
__set_irq_handler_unlocked
(
int
irq
,
irq_flow_handler_t
handler
)
{
__irq_set_handler_locked
(
irq
,
handler
);
}
static
inline
int
irq_balancing_disabled
(
unsigned
int
irq
)
static
inline
int
irq_balancing_disabled
(
unsigned
int
irq
)
{
{
struct
irq_desc
*
desc
;
struct
irq_desc
*
desc
;
desc
=
irq_to_desc
(
irq
);
desc
=
irq_to_desc
(
irq
);
return
desc
->
status
&
IRQ_NO_BALANCING_MASK
;
return
desc
->
status
_use_accessors
&
IRQ_NO_BALANCING_MASK
;
}
}
#endif
static
inline
void
static
inline
void
irq_set_lockdep_class
(
unsigned
int
irq
,
struct
lock_class_key
*
class
)
irq_set_lockdep_class
(
unsigned
int
irq
,
struct
lock_class_key
*
class
)
...
...
kernel/irq/Kconfig
View file @
0c6f8a8b
...
@@ -10,10 +10,6 @@ menu "IRQ subsystem"
...
@@ -10,10 +10,6 @@ menu "IRQ subsystem"
config GENERIC_HARDIRQS
config GENERIC_HARDIRQS
def_bool y
def_bool y
# Select this to disable the deprecated stuff
config GENERIC_HARDIRQS_NO_DEPRECATED
bool
config GENERIC_HARDIRQS_NO_COMPAT
config GENERIC_HARDIRQS_NO_COMPAT
bool
bool
...
...
kernel/irq/autoprobe.c
View file @
0c6f8a8b
...
@@ -70,10 +70,8 @@ unsigned long probe_irq_on(void)
...
@@ -70,10 +70,8 @@ unsigned long probe_irq_on(void)
raw_spin_lock_irq
(
&
desc
->
lock
);
raw_spin_lock_irq
(
&
desc
->
lock
);
if
(
!
desc
->
action
&&
irq_settings_can_probe
(
desc
))
{
if
(
!
desc
->
action
&&
irq_settings_can_probe
(
desc
))
{
desc
->
istate
|=
IRQS_AUTODETECT
|
IRQS_WAITING
;
desc
->
istate
|=
IRQS_AUTODETECT
|
IRQS_WAITING
;
if
(
irq_startup
(
desc
))
{
if
(
irq_startup
(
desc
))
irq_compat_set_pending
(
desc
);
desc
->
istate
|=
IRQS_PENDING
;
desc
->
istate
|=
IRQS_PENDING
;
}
}
}
raw_spin_unlock_irq
(
&
desc
->
lock
);
raw_spin_unlock_irq
(
&
desc
->
lock
);
}
}
...
...
kernel/irq/chip.c
View file @
0c6f8a8b
...
@@ -34,7 +34,6 @@ int irq_set_chip(unsigned int irq, struct irq_chip *chip)
...
@@ -34,7 +34,6 @@ int irq_set_chip(unsigned int irq, struct irq_chip *chip)
if
(
!
chip
)
if
(
!
chip
)
chip
=
&
no_irq_chip
;
chip
=
&
no_irq_chip
;
irq_chip_set_defaults
(
chip
);
desc
->
irq_data
.
chip
=
chip
;
desc
->
irq_data
.
chip
=
chip
;
irq_put_desc_unlock
(
desc
,
flags
);
irq_put_desc_unlock
(
desc
,
flags
);
/*
/*
...
@@ -141,25 +140,21 @@ EXPORT_SYMBOL_GPL(irq_get_irq_data);
...
@@ -141,25 +140,21 @@ EXPORT_SYMBOL_GPL(irq_get_irq_data);
static
void
irq_state_clr_disabled
(
struct
irq_desc
*
desc
)
static
void
irq_state_clr_disabled
(
struct
irq_desc
*
desc
)
{
{
irqd_clear
(
&
desc
->
irq_data
,
IRQD_IRQ_DISABLED
);
irqd_clear
(
&
desc
->
irq_data
,
IRQD_IRQ_DISABLED
);
irq_compat_clr_disabled
(
desc
);
}
}
static
void
irq_state_set_disabled
(
struct
irq_desc
*
desc
)
static
void
irq_state_set_disabled
(
struct
irq_desc
*
desc
)
{
{
irqd_set
(
&
desc
->
irq_data
,
IRQD_IRQ_DISABLED
);
irqd_set
(
&
desc
->
irq_data
,
IRQD_IRQ_DISABLED
);
irq_compat_set_disabled
(
desc
);
}
}
static
void
irq_state_clr_masked
(
struct
irq_desc
*
desc
)
static
void
irq_state_clr_masked
(
struct
irq_desc
*
desc
)
{
{
irqd_clear
(
&
desc
->
irq_data
,
IRQD_IRQ_MASKED
);
irqd_clear
(
&
desc
->
irq_data
,
IRQD_IRQ_MASKED
);
irq_compat_clr_masked
(
desc
);
}
}
static
void
irq_state_set_masked
(
struct
irq_desc
*
desc
)
static
void
irq_state_set_masked
(
struct
irq_desc
*
desc
)
{
{
irqd_set
(
&
desc
->
irq_data
,
IRQD_IRQ_MASKED
);
irqd_set
(
&
desc
->
irq_data
,
IRQD_IRQ_MASKED
);
irq_compat_set_masked
(
desc
);
}
}
int
irq_startup
(
struct
irq_desc
*
desc
)
int
irq_startup
(
struct
irq_desc
*
desc
)
...
@@ -209,126 +204,6 @@ void irq_disable(struct irq_desc *desc)
...
@@ -209,126 +204,6 @@ void irq_disable(struct irq_desc *desc)
}
}
}
}
#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
/* Temporary migration helpers */
static
void
compat_irq_mask
(
struct
irq_data
*
data
)
{
data
->
chip
->
mask
(
data
->
irq
);
}
static
void
compat_irq_unmask
(
struct
irq_data
*
data
)
{
data
->
chip
->
unmask
(
data
->
irq
);
}
static
void
compat_irq_ack
(
struct
irq_data
*
data
)
{
data
->
chip
->
ack
(
data
->
irq
);
}
static
void
compat_irq_mask_ack
(
struct
irq_data
*
data
)
{
data
->
chip
->
mask_ack
(
data
->
irq
);
}
static
void
compat_irq_eoi
(
struct
irq_data
*
data
)
{
data
->
chip
->
eoi
(
data
->
irq
);
}
static
void
compat_irq_enable
(
struct
irq_data
*
data
)
{
data
->
chip
->
enable
(
data
->
irq
);
}
static
void
compat_irq_disable
(
struct
irq_data
*
data
)
{
data
->
chip
->
disable
(
data
->
irq
);
}
static
void
compat_irq_shutdown
(
struct
irq_data
*
data
)
{
data
->
chip
->
shutdown
(
data
->
irq
);
}
static
unsigned
int
compat_irq_startup
(
struct
irq_data
*
data
)
{
return
data
->
chip
->
startup
(
data
->
irq
);
}
static
int
compat_irq_set_affinity
(
struct
irq_data
*
data
,
const
struct
cpumask
*
dest
,
bool
force
)
{
return
data
->
chip
->
set_affinity
(
data
->
irq
,
dest
);
}
static
int
compat_irq_set_type
(
struct
irq_data
*
data
,
unsigned
int
type
)
{
return
data
->
chip
->
set_type
(
data
->
irq
,
type
);
}
static
int
compat_irq_set_wake
(
struct
irq_data
*
data
,
unsigned
int
on
)
{
return
data
->
chip
->
set_wake
(
data
->
irq
,
on
);
}
static
int
compat_irq_retrigger
(
struct
irq_data
*
data
)
{
return
data
->
chip
->
retrigger
(
data
->
irq
);
}
static
void
compat_bus_lock
(
struct
irq_data
*
data
)
{
data
->
chip
->
bus_lock
(
data
->
irq
);
}
static
void
compat_bus_sync_unlock
(
struct
irq_data
*
data
)
{
data
->
chip
->
bus_sync_unlock
(
data
->
irq
);
}
#endif
/*
* Fixup enable/disable function pointers
*/
void
irq_chip_set_defaults
(
struct
irq_chip
*
chip
)
{
#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
if
(
chip
->
enable
)
chip
->
irq_enable
=
compat_irq_enable
;
if
(
chip
->
disable
)
chip
->
irq_disable
=
compat_irq_disable
;
if
(
chip
->
shutdown
)
chip
->
irq_shutdown
=
compat_irq_shutdown
;
if
(
chip
->
startup
)
chip
->
irq_startup
=
compat_irq_startup
;
if
(
!
chip
->
end
)
chip
->
end
=
dummy_irq_chip
.
end
;
if
(
chip
->
bus_lock
)
chip
->
irq_bus_lock
=
compat_bus_lock
;
if
(
chip
->
bus_sync_unlock
)
chip
->
irq_bus_sync_unlock
=
compat_bus_sync_unlock
;
if
(
chip
->
mask
)
chip
->
irq_mask
=
compat_irq_mask
;
if
(
chip
->
unmask
)
chip
->
irq_unmask
=
compat_irq_unmask
;
if
(
chip
->
ack
)
chip
->
irq_ack
=
compat_irq_ack
;
if
(
chip
->
mask_ack
)
chip
->
irq_mask_ack
=
compat_irq_mask_ack
;
if
(
chip
->
eoi
)
chip
->
irq_eoi
=
compat_irq_eoi
;
if
(
chip
->
set_affinity
)
chip
->
irq_set_affinity
=
compat_irq_set_affinity
;
if
(
chip
->
set_type
)
chip
->
irq_set_type
=
compat_irq_set_type
;
if
(
chip
->
set_wake
)
chip
->
irq_set_wake
=
compat_irq_set_wake
;
if
(
chip
->
retrigger
)
chip
->
irq_retrigger
=
compat_irq_retrigger
;
#endif
}
static
inline
void
mask_ack_irq
(
struct
irq_desc
*
desc
)
static
inline
void
mask_ack_irq
(
struct
irq_desc
*
desc
)
{
{
if
(
desc
->
irq_data
.
chip
->
irq_mask_ack
)
if
(
desc
->
irq_data
.
chip
->
irq_mask_ack
)
...
@@ -381,7 +256,6 @@ void handle_nested_irq(unsigned int irq)
...
@@ -381,7 +256,6 @@ void handle_nested_irq(unsigned int irq)
if
(
unlikely
(
!
action
||
irqd_irq_disabled
(
&
desc
->
irq_data
)))
if
(
unlikely
(
!
action
||
irqd_irq_disabled
(
&
desc
->
irq_data
)))
goto
out_unlock
;
goto
out_unlock
;
irq_compat_set_progress
(
desc
);
irqd_set
(
&
desc
->
irq_data
,
IRQD_IRQ_INPROGRESS
);
irqd_set
(
&
desc
->
irq_data
,
IRQD_IRQ_INPROGRESS
);
raw_spin_unlock_irq
(
&
desc
->
lock
);
raw_spin_unlock_irq
(
&
desc
->
lock
);
...
@@ -391,7 +265,6 @@ void handle_nested_irq(unsigned int irq)
...
@@ -391,7 +265,6 @@ void handle_nested_irq(unsigned int irq)
raw_spin_lock_irq
(
&
desc
->
lock
);
raw_spin_lock_irq
(
&
desc
->
lock
);
irqd_clear
(
&
desc
->
irq_data
,
IRQD_IRQ_INPROGRESS
);
irqd_clear
(
&
desc
->
irq_data
,
IRQD_IRQ_INPROGRESS
);
irq_compat_clr_progress
(
desc
);
out_unlock:
out_unlock:
raw_spin_unlock_irq
(
&
desc
->
lock
);
raw_spin_unlock_irq
(
&
desc
->
lock
);
...
@@ -514,7 +387,6 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
...
@@ -514,7 +387,6 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
* then mask it and get out of here:
* then mask it and get out of here:
*/
*/
if
(
unlikely
(
!
desc
->
action
||
irqd_irq_disabled
(
&
desc
->
irq_data
)))
{
if
(
unlikely
(
!
desc
->
action
||
irqd_irq_disabled
(
&
desc
->
irq_data
)))
{
irq_compat_set_pending
(
desc
);
desc
->
istate
|=
IRQS_PENDING
;
desc
->
istate
|=
IRQS_PENDING
;
mask_irq
(
desc
);
mask_irq
(
desc
);
goto
out
;
goto
out
;
...
@@ -567,7 +439,6 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
...
@@ -567,7 +439,6 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
if
(
unlikely
(
irqd_irq_disabled
(
&
desc
->
irq_data
)
||
if
(
unlikely
(
irqd_irq_disabled
(
&
desc
->
irq_data
)
||
irqd_irq_inprogress
(
&
desc
->
irq_data
)
||
!
desc
->
action
))
{
irqd_irq_inprogress
(
&
desc
->
irq_data
)
||
!
desc
->
action
))
{
if
(
!
irq_check_poll
(
desc
))
{
if
(
!
irq_check_poll
(
desc
))
{
irq_compat_set_pending
(
desc
);
desc
->
istate
|=
IRQS_PENDING
;
desc
->
istate
|=
IRQS_PENDING
;
mask_ack_irq
(
desc
);
mask_ack_irq
(
desc
);
goto
out_unlock
;
goto
out_unlock
;
...
...
kernel/irq/compat.h
deleted
100644 → 0
View file @
dced35ae
/*
* Compat layer for transition period
*/
#ifndef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
static
inline
void
irq_compat_set_progress
(
struct
irq_desc
*
desc
)
{
desc
->
status
|=
IRQ_INPROGRESS
;
}
static
inline
void
irq_compat_clr_progress
(
struct
irq_desc
*
desc
)
{
desc
->
status
&=
~
IRQ_INPROGRESS
;
}
static
inline
void
irq_compat_set_disabled
(
struct
irq_desc
*
desc
)
{
desc
->
status
|=
IRQ_DISABLED
;
}
static
inline
void
irq_compat_clr_disabled
(
struct
irq_desc
*
desc
)
{
desc
->
status
&=
~
IRQ_DISABLED
;
}
static
inline
void
irq_compat_set_pending
(
struct
irq_desc
*
desc
)
{
desc
->
status
|=
IRQ_PENDING
;
}
static
inline
void
irq_compat_clr_pending
(
struct
irq_desc
*
desc
)
{
desc
->
status
&=
~
IRQ_PENDING
;
}
static
inline
void
irq_compat_set_masked
(
struct
irq_desc
*
desc
)
{
desc
->
status
|=
IRQ_MASKED
;
}
static
inline
void
irq_compat_clr_masked
(
struct
irq_desc
*
desc
)
{
desc
->
status
&=
~
IRQ_MASKED
;
}
static
inline
void
irq_compat_set_move_pending
(
struct
irq_desc
*
desc
)
{
desc
->
status
|=
IRQ_MOVE_PENDING
;
}
static
inline
void
irq_compat_clr_move_pending
(
struct
irq_desc
*
desc
)
{
desc
->
status
&=
~
IRQ_MOVE_PENDING
;
}
static
inline
void
irq_compat_set_affinity
(
struct
irq_desc
*
desc
)
{
desc
->
status
|=
IRQ_AFFINITY_SET
;
}
static
inline
void
irq_compat_clr_affinity
(
struct
irq_desc
*
desc
)
{
desc
->
status
&=
~
IRQ_AFFINITY_SET
;
}
#else
static
inline
void
irq_compat_set_progress
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_clr_progress
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_set_disabled
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_clr_disabled
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_set_pending
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_clr_pending
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_set_masked
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_clr_masked
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_set_move_pending
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_clr_move_pending
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_set_affinity
(
struct
irq_desc
*
desc
)
{
}
static
inline
void
irq_compat_clr_affinity
(
struct
irq_desc
*
desc
)
{
}
#endif
kernel/irq/debug.h
View file @
0c6f8a8b
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
#include <linux/kallsyms.h>
#include <linux/kallsyms.h>
#define P(f) if (desc->status & f) printk("%14s set\n", #f)
#define P(f) if (desc->status
_use_accessors
& f) printk("%14s set\n", #f)
#define PS(f) if (desc->istate & f) printk("%14s set\n", #f)
#define PS(f) if (desc->istate & f) printk("%14s set\n", #f)
/* FIXME */
/* FIXME */
#define PD(f) do { } while (0)
#define PD(f) do { } while (0)
...
...
kernel/irq/dummychip.c
View file @
0c6f8a8b
...
@@ -31,13 +31,6 @@ static unsigned int noop_ret(struct irq_data *data)
...
@@ -31,13 +31,6 @@ static unsigned int noop_ret(struct irq_data *data)
return
0
;
return
0
;
}
}
#ifndef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED
static
void
compat_noop
(
unsigned
int
irq
)
{
}
#define END_INIT .end = compat_noop
#else
#define END_INIT
#endif
/*
/*
* Generic no controller implementation
* Generic no controller implementation
*/
*/
...
@@ -48,7 +41,6 @@ struct irq_chip no_irq_chip = {
...
@@ -48,7 +41,6 @@ struct irq_chip no_irq_chip = {
.
irq_enable
=
noop
,
.
irq_enable
=
noop
,
.
irq_disable
=
noop
,
.
irq_disable
=
noop
,
.
irq_ack
=
ack_bad
,
.
irq_ack
=
ack_bad
,
END_INIT
};
};
/*
/*
...
@@ -64,5 +56,4 @@ struct irq_chip dummy_irq_chip = {
...
@@ -64,5 +56,4 @@ struct irq_chip dummy_irq_chip = {
.
irq_ack
=
noop
,
.
irq_ack
=
noop
,
.
irq_mask
=
noop
,
.
irq_mask
=
noop
,
.
irq_unmask
=
noop
,
.
irq_unmask
=
noop
,
END_INIT
};
};
kernel/irq/handle.c
View file @
0c6f8a8b
...
@@ -175,9 +175,7 @@ irqreturn_t handle_irq_event(struct irq_desc *desc)
...
@@ -175,9 +175,7 @@ irqreturn_t handle_irq_event(struct irq_desc *desc)
struct
irqaction
*
action
=
desc
->
action
;
struct
irqaction
*
action
=
desc
->
action
;
irqreturn_t
ret
;
irqreturn_t
ret
;
irq_compat_clr_pending
(
desc
);
desc
->
istate
&=
~
IRQS_PENDING
;
desc
->
istate
&=
~
IRQS_PENDING
;
irq_compat_set_progress
(
desc
);
irqd_set
(
&
desc
->
irq_data
,
IRQD_IRQ_INPROGRESS
);
irqd_set
(
&
desc
->
irq_data
,
IRQD_IRQ_INPROGRESS
);
raw_spin_unlock
(
&
desc
->
lock
);
raw_spin_unlock
(
&
desc
->
lock
);
...
@@ -185,6 +183,5 @@ irqreturn_t handle_irq_event(struct irq_desc *desc)
...
@@ -185,6 +183,5 @@ irqreturn_t handle_irq_event(struct irq_desc *desc)
raw_spin_lock
(
&
desc
->
lock
);
raw_spin_lock
(
&
desc
->
lock
);
irqd_clear
(
&
desc
->
irq_data
,
IRQD_IRQ_INPROGRESS
);
irqd_clear
(
&
desc
->
irq_data
,
IRQD_IRQ_INPROGRESS
);
irq_compat_clr_progress
(
desc
);
return
ret
;
return
ret
;
}
}
kernel/irq/internals.h
View file @
0c6f8a8b
...
@@ -15,10 +15,6 @@
...
@@ -15,10 +15,6 @@
#define istate core_internal_state__do_not_mess_with_it
#define istate core_internal_state__do_not_mess_with_it
#ifdef CONFIG_GENERIC_HARDIRQS_NO_COMPAT
# define status status_use_accessors
#endif
extern
int
noirqdebug
;
extern
int
noirqdebug
;
/*
/*
...
@@ -61,15 +57,11 @@ enum {
...
@@ -61,15 +57,11 @@ enum {
IRQS_SUSPENDED
=
0x00000800
,
IRQS_SUSPENDED
=
0x00000800
,
};
};
#include "compat.h"
#include "debug.h"
#include "debug.h"
#include "settings.h"
#include "settings.h"
#define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data)
#define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data)
/* Set default functions for irq_chip structures: */
extern
void
irq_chip_set_defaults
(
struct
irq_chip
*
chip
);
extern
int
__irq_set_trigger
(
struct
irq_desc
*
desc
,
unsigned
int
irq
,
extern
int
__irq_set_trigger
(
struct
irq_desc
*
desc
,
unsigned
int
irq
,
unsigned
long
flags
);
unsigned
long
flags
);
extern
void
__disable_irq
(
struct
irq_desc
*
desc
,
unsigned
int
irq
,
bool
susp
);
extern
void
__disable_irq
(
struct
irq_desc
*
desc
,
unsigned
int
irq
,
bool
susp
);
...
@@ -156,13 +148,11 @@ irq_put_desc_unlock(struct irq_desc *desc, unsigned long flags)
...
@@ -156,13 +148,11 @@ irq_put_desc_unlock(struct irq_desc *desc, unsigned long flags)
static
inline
void
irqd_set_move_pending
(
struct
irq_data
*
d
)
static
inline
void
irqd_set_move_pending
(
struct
irq_data
*
d
)
{
{
d
->
state_use_accessors
|=
IRQD_SETAFFINITY_PENDING
;
d
->
state_use_accessors
|=
IRQD_SETAFFINITY_PENDING
;
irq_compat_set_move_pending
(
irq_data_to_desc
(
d
));
}
}
static
inline
void
irqd_clr_move_pending
(
struct
irq_data
*
d
)
static
inline
void
irqd_clr_move_pending
(
struct
irq_data
*
d
)
{
{
d
->
state_use_accessors
&=
~
IRQD_SETAFFINITY_PENDING
;
d
->
state_use_accessors
&=
~
IRQD_SETAFFINITY_PENDING
;
irq_compat_clr_move_pending
(
irq_data_to_desc
(
d
));
}
}
static
inline
void
irqd_clear
(
struct
irq_data
*
d
,
unsigned
int
mask
)
static
inline
void
irqd_clear
(
struct
irq_data
*
d
,
unsigned
int
mask
)
...
...
kernel/irq/manage.c
View file @
0c6f8a8b
...
@@ -166,7 +166,6 @@ int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask)
...
@@ -166,7 +166,6 @@ int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask)
kref_get
(
&
desc
->
affinity_notify
->
kref
);
kref_get
(
&
desc
->
affinity_notify
->
kref
);
schedule_work
(
&
desc
->
affinity_notify
->
work
);
schedule_work
(
&
desc
->
affinity_notify
->
work
);
}
}
irq_compat_set_affinity
(
desc
);
irqd_set
(
data
,
IRQD_AFFINITY_SET
);
irqd_set
(
data
,
IRQD_AFFINITY_SET
);
return
ret
;
return
ret
;
...
@@ -297,10 +296,8 @@ setup_affinity(unsigned int irq, struct irq_desc *desc, struct cpumask *mask)
...
@@ -297,10 +296,8 @@ setup_affinity(unsigned int irq, struct irq_desc *desc, struct cpumask *mask)
if
(
cpumask_intersects
(
desc
->
irq_data
.
affinity
,
if
(
cpumask_intersects
(
desc
->
irq_data
.
affinity
,
cpu_online_mask
))
cpu_online_mask
))
set
=
desc
->
irq_data
.
affinity
;
set
=
desc
->
irq_data
.
affinity
;
else
{
else
irq_compat_clr_affinity
(
desc
);
irqd_clear
(
&
desc
->
irq_data
,
IRQD_AFFINITY_SET
);
irqd_clear
(
&
desc
->
irq_data
,
IRQD_AFFINITY_SET
);
}
}
}
cpumask_and
(
mask
,
cpu_online_mask
,
set
);
cpumask_and
(
mask
,
cpu_online_mask
,
set
);
...
@@ -587,8 +584,6 @@ int __irq_set_trigger(struct irq_desc *desc, unsigned int irq,
...
@@ -587,8 +584,6 @@ int __irq_set_trigger(struct irq_desc *desc, unsigned int irq,
irqd_set
(
&
desc
->
irq_data
,
IRQD_LEVEL
);
irqd_set
(
&
desc
->
irq_data
,
IRQD_LEVEL
);
}
}
if
(
chip
!=
desc
->
irq_data
.
chip
)
irq_chip_set_defaults
(
desc
->
irq_data
.
chip
);
ret
=
0
;
ret
=
0
;
break
;
break
;
default:
default:
...
@@ -785,7 +780,6 @@ static int irq_thread(void *data)
...
@@ -785,7 +780,6 @@ static int irq_thread(void *data)
* but AFAICT IRQS_PENDING should be fine as it
* but AFAICT IRQS_PENDING should be fine as it
* retriggers the interrupt itself --- tglx
* retriggers the interrupt itself --- tglx
*/
*/
irq_compat_set_pending
(
desc
);
desc
->
istate
|=
IRQS_PENDING
;
desc
->
istate
|=
IRQS_PENDING
;
raw_spin_unlock_irq
(
&
desc
->
lock
);
raw_spin_unlock_irq
(
&
desc
->
lock
);
}
else
{
}
else
{
...
@@ -981,8 +975,6 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
...
@@ -981,8 +975,6 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
new
->
thread_mask
=
1
<<
ffz
(
thread_mask
);
new
->
thread_mask
=
1
<<
ffz
(
thread_mask
);
if
(
!
shared
)
{
if
(
!
shared
)
{
irq_chip_set_defaults
(
desc
->
irq_data
.
chip
);
init_waitqueue_head
(
&
desc
->
wait_for_threads
);
init_waitqueue_head
(
&
desc
->
wait_for_threads
);
/* Setup the type (level, edge polarity) if configured: */
/* Setup the type (level, edge polarity) if configured: */
...
...
kernel/irq/resend.c
View file @
0c6f8a8b
...
@@ -65,7 +65,6 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq)
...
@@ -65,7 +65,6 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq)
if
(
desc
->
istate
&
IRQS_REPLAY
)
if
(
desc
->
istate
&
IRQS_REPLAY
)
return
;
return
;
if
(
desc
->
istate
&
IRQS_PENDING
)
{
if
(
desc
->
istate
&
IRQS_PENDING
)
{
irq_compat_clr_pending
(
desc
);
desc
->
istate
&=
~
IRQS_PENDING
;
desc
->
istate
&=
~
IRQS_PENDING
;
desc
->
istate
|=
IRQS_REPLAY
;
desc
->
istate
|=
IRQS_REPLAY
;
...
...
kernel/irq/settings.h
View file @
0c6f8a8b
...
@@ -15,17 +15,8 @@ enum {
...
@@ -15,17 +15,8 @@ enum {
_IRQF_MODIFY_MASK
=
IRQF_MODIFY_MASK
,
_IRQF_MODIFY_MASK
=
IRQF_MODIFY_MASK
,
};
};
#define IRQ_INPROGRESS GOT_YOU_MORON
#define IRQ_REPLAY GOT_YOU_MORON
#define IRQ_WAITING GOT_YOU_MORON
#define IRQ_DISABLED GOT_YOU_MORON
#define IRQ_PENDING GOT_YOU_MORON
#define IRQ_MASKED GOT_YOU_MORON
#define IRQ_WAKEUP GOT_YOU_MORON
#define IRQ_MOVE_PENDING GOT_YOU_MORON
#define IRQ_PER_CPU GOT_YOU_MORON
#define IRQ_PER_CPU GOT_YOU_MORON
#define IRQ_NO_BALANCING GOT_YOU_MORON
#define IRQ_NO_BALANCING GOT_YOU_MORON
#define IRQ_AFFINITY_SET GOT_YOU_MORON
#define IRQ_LEVEL GOT_YOU_MORON
#define IRQ_LEVEL GOT_YOU_MORON
#define IRQ_NOPROBE GOT_YOU_MORON
#define IRQ_NOPROBE GOT_YOU_MORON
#define IRQ_NOREQUEST GOT_YOU_MORON
#define IRQ_NOREQUEST GOT_YOU_MORON
...
@@ -37,102 +28,98 @@ enum {
...
@@ -37,102 +28,98 @@ enum {
static
inline
void
static
inline
void
irq_settings_clr_and_set
(
struct
irq_desc
*
desc
,
u32
clr
,
u32
set
)
irq_settings_clr_and_set
(
struct
irq_desc
*
desc
,
u32
clr
,
u32
set
)
{
{
desc
->
status
&=
~
(
clr
&
_IRQF_MODIFY_MASK
);
desc
->
status
_use_accessors
&=
~
(
clr
&
_IRQF_MODIFY_MASK
);
desc
->
status
|=
(
set
&
_IRQF_MODIFY_MASK
);
desc
->
status
_use_accessors
|=
(
set
&
_IRQF_MODIFY_MASK
);
}
}
static
inline
bool
irq_settings_is_per_cpu
(
struct
irq_desc
*
desc
)
static
inline
bool
irq_settings_is_per_cpu
(
struct
irq_desc
*
desc
)
{
{
return
desc
->
status
&
_IRQ_PER_CPU
;
return
desc
->
status
_use_accessors
&
_IRQ_PER_CPU
;
}
}
static
inline
void
irq_settings_set_per_cpu
(
struct
irq_desc
*
desc
)
static
inline
void
irq_settings_set_per_cpu
(
struct
irq_desc
*
desc
)
{
{
desc
->
status
|=
_IRQ_PER_CPU
;
desc
->
status
_use_accessors
|=
_IRQ_PER_CPU
;
}
}
static
inline
void
irq_settings_set_no_balancing
(
struct
irq_desc
*
desc
)
static
inline
void
irq_settings_set_no_balancing
(
struct
irq_desc
*
desc
)
{
{
desc
->
status
|=
_IRQ_NO_BALANCING
;
desc
->
status
_use_accessors
|=
_IRQ_NO_BALANCING
;
}
}
static
inline
bool
irq_settings_has_no_balance_set
(
struct
irq_desc
*
desc
)
static
inline
bool
irq_settings_has_no_balance_set
(
struct
irq_desc
*
desc
)
{
{
return
desc
->
status
&
_IRQ_NO_BALANCING
;
return
desc
->
status
_use_accessors
&
_IRQ_NO_BALANCING
;
}
}
static
inline
u32
irq_settings_get_trigger_mask
(
struct
irq_desc
*
desc
)
static
inline
u32
irq_settings_get_trigger_mask
(
struct
irq_desc
*
desc
)
{
{
return
desc
->
status
&
IRQ_TYPE_SENSE_MASK
;
return
desc
->
status
_use_accessors
&
IRQ_TYPE_SENSE_MASK
;
}
}
static
inline
void
static
inline
void
irq_settings_set_trigger_mask
(
struct
irq_desc
*
desc
,
u32
mask
)
irq_settings_set_trigger_mask
(
struct
irq_desc
*
desc
,
u32
mask
)
{
{
desc
->
status
&=
~
IRQ_TYPE_SENSE_MASK
;
desc
->
status
_use_accessors
&=
~
IRQ_TYPE_SENSE_MASK
;
desc
->
status
|=
mask
&
IRQ_TYPE_SENSE_MASK
;
desc
->
status
_use_accessors
|=
mask
&
IRQ_TYPE_SENSE_MASK
;
}
}
static
inline
bool
irq_settings_is_level
(
struct
irq_desc
*
desc
)
static
inline
bool
irq_settings_is_level
(
struct
irq_desc
*
desc
)
{
{
return
desc
->
status
&
_IRQ_LEVEL
;
return
desc
->
status
_use_accessors
&
_IRQ_LEVEL
;
}
}
static
inline
void
irq_settings_clr_level
(
struct
irq_desc
*
desc
)
static
inline
void
irq_settings_clr_level
(
struct
irq_desc
*
desc
)
{
{
desc
->
status
&=
~
_IRQ_LEVEL
;
desc
->
status
_use_accessors
&=
~
_IRQ_LEVEL
;
}
}
static
inline
void
irq_settings_set_level
(
struct
irq_desc
*
desc
)
static
inline
void
irq_settings_set_level
(
struct
irq_desc
*
desc
)
{
{
desc
->
status
|=
_IRQ_LEVEL
;
desc
->
status
_use_accessors
|=
_IRQ_LEVEL
;
}
}
static
inline
bool
irq_settings_can_request
(
struct
irq_desc
*
desc
)
static
inline
bool
irq_settings_can_request
(
struct
irq_desc
*
desc
)
{
{
return
!
(
desc
->
status
&
_IRQ_NOREQUEST
);
return
!
(
desc
->
status
_use_accessors
&
_IRQ_NOREQUEST
);
}
}
static
inline
void
irq_settings_clr_norequest
(
struct
irq_desc
*
desc
)
static
inline
void
irq_settings_clr_norequest
(
struct
irq_desc
*
desc
)
{
{
desc
->
status
&=
~
_IRQ_NOREQUEST
;
desc
->
status
_use_accessors
&=
~
_IRQ_NOREQUEST
;
}
}
static
inline
void
irq_settings_set_norequest
(
struct
irq_desc
*
desc
)
static
inline
void
irq_settings_set_norequest
(
struct
irq_desc
*
desc
)
{
{
desc
->
status
|=
_IRQ_NOREQUEST
;
desc
->
status
_use_accessors
|=
_IRQ_NOREQUEST
;
}
}
static
inline
bool
irq_settings_can_probe
(
struct
irq_desc
*
desc
)
static
inline
bool
irq_settings_can_probe
(
struct
irq_desc
*
desc
)
{
{
return
!
(
desc
->
status
&
_IRQ_NOPROBE
);
return
!
(
desc
->
status
_use_accessors
&
_IRQ_NOPROBE
);
}
}
static
inline
void
irq_settings_clr_noprobe
(
struct
irq_desc
*
desc
)
static
inline
void
irq_settings_clr_noprobe
(
struct
irq_desc
*
desc
)
{
{
desc
->
status
&=
~
_IRQ_NOPROBE
;
desc
->
status
_use_accessors
&=
~
_IRQ_NOPROBE
;
}
}
static
inline
void
irq_settings_set_noprobe
(
struct
irq_desc
*
desc
)
static
inline
void
irq_settings_set_noprobe
(
struct
irq_desc
*
desc
)
{
{
desc
->
status
|=
_IRQ_NOPROBE
;
desc
->
status
_use_accessors
|=
_IRQ_NOPROBE
;
}
}
static
inline
bool
irq_settings_can_move_pcntxt
(
struct
irq_desc
*
desc
)
static
inline
bool
irq_settings_can_move_pcntxt
(
struct
irq_desc
*
desc
)
{
{
return
desc
->
status
&
_IRQ_MOVE_PCNTXT
;
return
desc
->
status
_use_accessors
&
_IRQ_MOVE_PCNTXT
;
}
}
static
inline
bool
irq_settings_can_autoenable
(
struct
irq_desc
*
desc
)
static
inline
bool
irq_settings_can_autoenable
(
struct
irq_desc
*
desc
)
{
{
return
!
(
desc
->
status
&
_IRQ_NOAUTOEN
);
return
!
(
desc
->
status
_use_accessors
&
_IRQ_NOAUTOEN
);
}
}
static
inline
bool
irq_settings_is_nested_thread
(
struct
irq_desc
*
desc
)
static
inline
bool
irq_settings_is_nested_thread
(
struct
irq_desc
*
desc
)
{
{
return
desc
->
status
&
_IRQ_NESTED_THREAD
;
return
desc
->
status
_use_accessors
&
_IRQ_NESTED_THREAD
;
}
}
/* Nothing should touch desc->status from now on */
#undef status
#define status USE_THE_PROPER_WRAPPERS_YOU_MORON
kernel/irq/spurious.c
View file @
0c6f8a8b
...
@@ -93,7 +93,6 @@ static int try_one_irq(int irq, struct irq_desc *desc, bool force)
...
@@ -93,7 +93,6 @@ static int try_one_irq(int irq, struct irq_desc *desc, bool force)
* Already running: If it is shared get the other
* Already running: If it is shared get the other
* CPU to go looking for our mystery interrupt too
* CPU to go looking for our mystery interrupt too
*/
*/
irq_compat_set_pending
(
desc
);
desc
->
istate
|=
IRQS_PENDING
;
desc
->
istate
|=
IRQS_PENDING
;
goto
out
;
goto
out
;
}
}
...
...
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