vme: bridges: reduce stack usage
With CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, the stack usage in vme_fake grows above the warning limit: drivers/vme/bridges/vme_fake.c: In function 'fake_master_read': drivers/vme/bridges/vme_fake.c:610:1: error: the frame size of 1160 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] drivers/vme/bridges/vme_fake.c: In function 'fake_master_write': drivers/vme/bridges/vme_fake.c:797:1: error: the frame size of 1160 bytes is larger than 1024 bytes [-Werror=frame-larger-than=] The problem is that in some configurations, each call to fake_vmereadX() puts another variable on the stack. Reduce the amount of inlining to get back to the previous state, with no function using more than 200 bytes each. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Link: https://lore.kernel.org/r/20200107200610.3482901-1-arnd@arndb.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e2f9d739b2
commit
7483e7a939
@ -414,8 +414,9 @@ static void fake_lm_check(struct fake_driver *bridge, unsigned long long addr,
|
||||
}
|
||||
}
|
||||
|
||||
static u8 fake_vmeread8(struct fake_driver *bridge, unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
static noinline_for_stack u8 fake_vmeread8(struct fake_driver *bridge,
|
||||
unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
{
|
||||
u8 retval = 0xff;
|
||||
int i;
|
||||
@ -446,8 +447,9 @@ static u8 fake_vmeread8(struct fake_driver *bridge, unsigned long long addr,
|
||||
return retval;
|
||||
}
|
||||
|
||||
static u16 fake_vmeread16(struct fake_driver *bridge, unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
static noinline_for_stack u16 fake_vmeread16(struct fake_driver *bridge,
|
||||
unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
{
|
||||
u16 retval = 0xffff;
|
||||
int i;
|
||||
@ -478,8 +480,9 @@ static u16 fake_vmeread16(struct fake_driver *bridge, unsigned long long addr,
|
||||
return retval;
|
||||
}
|
||||
|
||||
static u32 fake_vmeread32(struct fake_driver *bridge, unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
static noinline_for_stack u32 fake_vmeread32(struct fake_driver *bridge,
|
||||
unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
{
|
||||
u32 retval = 0xffffffff;
|
||||
int i;
|
||||
@ -609,8 +612,9 @@ out:
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void fake_vmewrite8(struct fake_driver *bridge, u8 *buf,
|
||||
unsigned long long addr, u32 aspace, u32 cycle)
|
||||
static noinline_for_stack void fake_vmewrite8(struct fake_driver *bridge,
|
||||
u8 *buf, unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
{
|
||||
int i;
|
||||
unsigned long long start, end, offset;
|
||||
@ -639,8 +643,9 @@ static void fake_vmewrite8(struct fake_driver *bridge, u8 *buf,
|
||||
|
||||
}
|
||||
|
||||
static void fake_vmewrite16(struct fake_driver *bridge, u16 *buf,
|
||||
unsigned long long addr, u32 aspace, u32 cycle)
|
||||
static noinline_for_stack void fake_vmewrite16(struct fake_driver *bridge,
|
||||
u16 *buf, unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
{
|
||||
int i;
|
||||
unsigned long long start, end, offset;
|
||||
@ -669,8 +674,9 @@ static void fake_vmewrite16(struct fake_driver *bridge, u16 *buf,
|
||||
|
||||
}
|
||||
|
||||
static void fake_vmewrite32(struct fake_driver *bridge, u32 *buf,
|
||||
unsigned long long addr, u32 aspace, u32 cycle)
|
||||
static noinline_for_stack void fake_vmewrite32(struct fake_driver *bridge,
|
||||
u32 *buf, unsigned long long addr,
|
||||
u32 aspace, u32 cycle)
|
||||
{
|
||||
int i;
|
||||
unsigned long long start, end, offset;
|
||||
|
Loading…
Reference in New Issue
Block a user