Message ID | 20201202154207.173916-1-rsalvaterra@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | ramips/mt7621: refresh the kernel config | expand |
Hi, > -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] > On Behalf Of Rui Salvaterra > Sent: Mittwoch, 2. Dezember 2020 16:42 > To: openwrt-devel@lists.openwrt.org > Cc: Rui Salvaterra <rsalvaterra@gmail.com> > Subject: [PATCH] ramips/mt7621: refresh the kernel config > > The removed config symbols are already enabled by the generic kernel > configuration (or by default), while the added ones are forcefully enabled by > the specific architecture. as already discussed on IRC, this is removing a lot of symbols, which makes not much sense to me. It appears that this commit broke the behavior of "make kernel_oldconfig": https://github.com/openwrt/openwrt/commit/a8fb12a7d62c94fd1bbda332752e0f8c794f3702 Just reverting that commit results in something that "looks reasonable" after make kernel_oldconfig. I'm marking that patch with "changes requested", though it's not really Rui's fault in the first place. Let's see where this evolves to. Best Adrian > > Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com> > --- > Trivial make kernel_oldconfig CONFIG_TARGET=subtarget. > > target/linux/ramips/mt7621/config-5.4 | 54 ++------------------------- > 1 file changed, 4 insertions(+), 50 deletions(-) > > diff --git a/target/linux/ramips/mt7621/config-5.4 > b/target/linux/ramips/mt7621/config-5.4 > index b4c8ab1f1c..eaef2e40d1 100644 > --- a/target/linux/ramips/mt7621/config-5.4 > +++ b/target/linux/ramips/mt7621/config-5.4 > @@ -1,24 +1,9 @@ > CONFIG_ARCH_32BIT_OFF_T=y > CONFIG_ARCH_CLOCKSOURCE_DATA=y > -CONFIG_ARCH_HAS_DMA_COHERENT_TO_PFN=y > -CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y > -CONFIG_ARCH_HAS_DMA_WRITE_COMBINE=y > -CONFIG_ARCH_HAS_ELF_RANDOMIZE=y > -CONFIG_ARCH_HAS_RESET_CONTROLLER=y > -CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y > -CONFIG_ARCH_HAS_TICK_BROADCAST=y > -CONFIG_ARCH_HAS_UNCACHED_SEGMENT=y > CONFIG_ARCH_HIBERNATION_POSSIBLE=y > CONFIG_ARCH_MMAP_RND_BITS_MAX=15 > CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15 > -CONFIG_ARCH_SUPPORTS_UPROBES=y > CONFIG_ARCH_SUSPEND_POSSIBLE=y > -CONFIG_ARCH_USE_BUILTIN_BSWAP=y > -CONFIG_ARCH_USE_MEMREMAP_PROT=y > -CONFIG_ARCH_USE_QUEUED_RWLOCKS=y > -CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y > -CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y > -CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y > CONFIG_AT803X_PHY=y > CONFIG_BLK_MQ_PCI=y > CONFIG_BOARD_SCACHE=y > @@ -65,6 +50,7 @@ CONFIG_CRYPTO_NULL2=y > CONFIG_CRYPTO_RNG2=y > CONFIG_CSRC_R4K=y > CONFIG_DEBUG_PINCTRL=y > +CONFIG_DIMLIB=y > CONFIG_DMA_NONCOHERENT=y > CONFIG_DMA_NONCOHERENT_CACHE_SYNC=y > # CONFIG_DMA_RALINK is not set > @@ -108,46 +94,12 @@ CONFIG_GPIO_MT7621=y # CONFIG_GPIO_RALINK > is not set CONFIG_GPIO_WATCHDOG=y # > CONFIG_GPIO_WATCHDOG_ARCH_INITCALL is not set > +CONFIG_GRO_CELLS=y > CONFIG_HANDLE_DOMAIN_IRQ=y > CONFIG_HARDWARE_WATCHPOINTS=y > CONFIG_HAS_DMA=y > CONFIG_HAS_IOMEM=y > CONFIG_HAS_IOPORT_MAP=y > -CONFIG_HAVE_ARCH_COMPILER_H=y > -CONFIG_HAVE_ARCH_JUMP_LABEL=y > -CONFIG_HAVE_ARCH_KGDB=y > -CONFIG_HAVE_ARCH_SECCOMP_FILTER=y > -CONFIG_HAVE_ARCH_TRACEHOOK=y > -CONFIG_HAVE_ASM_MODVERSIONS=y > -CONFIG_HAVE_CLK=y > -CONFIG_HAVE_CLK_PREPARE=y > -CONFIG_HAVE_CONTEXT_TRACKING=y > -CONFIG_HAVE_COPY_THREAD_TLS=y > -CONFIG_HAVE_C_RECORDMCOUNT=y > -CONFIG_HAVE_DEBUG_KMEMLEAK=y > -CONFIG_HAVE_DEBUG_STACKOVERFLOW=y > -CONFIG_HAVE_DMA_CONTIGUOUS=y > -CONFIG_HAVE_DYNAMIC_FTRACE=y > -CONFIG_HAVE_FAST_GUP=y > -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y > -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y > -CONFIG_HAVE_FUNCTION_TRACER=y > -CONFIG_HAVE_GENERIC_VDSO=y > -CONFIG_HAVE_IDE=y > -CONFIG_HAVE_IOREMAP_PROT=y > -CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y > -CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y > -CONFIG_HAVE_KVM=y > -CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y > -CONFIG_HAVE_MEMBLOCK_NODE_MAP=y > -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y > -CONFIG_HAVE_NET_DSA=y > -CONFIG_HAVE_OPROFILE=y > -CONFIG_HAVE_PCI=y > -CONFIG_HAVE_PERF_EVENTS=y > -CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y > -CONFIG_HAVE_RSEQ=y > -CONFIG_HAVE_SYSCALL_TRACEPOINTS=y > CONFIG_HIGHMEM=y > CONFIG_HZ=250 > CONFIG_HZ_250=y > @@ -177,6 +129,7 @@ CONFIG_MIKROTIK_RB_SYSFS=y CONFIG_MIPS=y > CONFIG_MIPS_ASID_BITS=8 > CONFIG_MIPS_ASID_SHIFT=0 > +CONFIG_MIPS_CBPF_JIT=y > CONFIG_MIPS_CLOCK_VSYSCALL=y > CONFIG_MIPS_CM=y > # CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set @@ -316,6 +269,7 > @@ CONFIG_SYS_SUPPORTS_MIPS_CPS=y > CONFIG_SYS_SUPPORTS_MULTITHREADING=y > CONFIG_SYS_SUPPORTS_SCHED_SMT=y > CONFIG_SYS_SUPPORTS_SMP=y > +CONFIG_SYS_SUPPORTS_ZBOOT=y > CONFIG_TARGET_ISA_REV=2 > CONFIG_TICK_CPU_ACCOUNTING=y > CONFIG_TIMER_OF=y > -- > 2.29.2 > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Hi, On 2020-12-02 18:32, Adrian Schmutzler wrote: >> -----Original Message----- >> From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] >> On Behalf Of Rui Salvaterra >> Sent: Mittwoch, 2. Dezember 2020 16:42 >> To: openwrt-devel@lists.openwrt.org >> Cc: Rui Salvaterra <rsalvaterra@gmail.com> >> Subject: [PATCH] ramips/mt7621: refresh the kernel config >> >> The removed config symbols are already enabled by the generic kernel >> configuration (or by default), while the added ones are forcefully enabled by >> the specific architecture. > > as already discussed on IRC, this is removing a lot of symbols, which makes not much sense to me. > > It appears that this commit broke the behavior of "make kernel_oldconfig": > > https://github.com/openwrt/openwrt/commit/a8fb12a7d62c94fd1bbda332752e0f8c794f3702 > > Just reverting that commit results in something that "looks reasonable" after make kernel_oldconfig. > > I'm marking that patch with "changes requested", though it's not really Rui's fault in the first place. > > Let's see where this evolves to. Removing a lot of symbols was the whole point behind my commit, and it makes sense that any subsequent refresh has a big negative delta. I tried to be careful about only filtering out auto-generated symbols. Did I accidentally hit any symbol with a prompt that shows up on make afterwards? - Felix
> -----Original Message----- > From: Felix Fietkau [mailto:nbd@nbd.name] > Sent: Mittwoch, 2. Dezember 2020 19:25 > To: Adrian Schmutzler <mail@adrianschmutzler.de>; 'Rui Salvaterra' > <rsalvaterra@gmail.com>; openwrt-devel@lists.openwrt.org > Subject: Re: [PATCH] ramips/mt7621: refresh the kernel config > > > Hi, > > > On 2020-12-02 18:32, Adrian Schmutzler wrote: > >> -----Original Message----- > >> From: openwrt-devel [mailto:openwrt-devel- > bounces@lists.openwrt.org] > >> On Behalf Of Rui Salvaterra > >> Sent: Mittwoch, 2. Dezember 2020 16:42 > >> To: openwrt-devel@lists.openwrt.org > >> Cc: Rui Salvaterra <rsalvaterra@gmail.com> > >> Subject: [PATCH] ramips/mt7621: refresh the kernel config > >> > >> The removed config symbols are already enabled by the generic kernel > >> configuration (or by default), while the added ones are forcefully > >> enabled by the specific architecture. > > > > as already discussed on IRC, this is removing a lot of symbols, which makes > not much sense to me. > > > > It appears that this commit broke the behavior of "make kernel_oldconfig": > > > > > https://github.com/openwrt/openwrt/commit/a8fb12a7d62c94fd1bbda3327 > 52e > > 0f8c794f3702 > > > > Just reverting that commit results in something that "looks reasonable" > after make kernel_oldconfig. > > > > I'm marking that patch with "changes requested", though it's not really > Rui's fault in the first place. > > > > Let's see where this evolves to. > Removing a lot of symbols was the whole point behind my commit, and it > makes sense that any subsequent refresh has a big negative delta. > > I tried to be careful about only filtering out auto-generated symbols. But then I don't understand why target/linux/generic/config-filter contains all patterns followed by "is not set", when it's meant to match =y as well? Best Adrian > Did I accidentally hit any symbol with a prompt that shows up on make > afterwards? > > - Felix
On 2020-12-02 19:45, Adrian Schmutzler wrote: >> -----Original Message----- >> From: Felix Fietkau [mailto:nbd@nbd.name] >> Sent: Mittwoch, 2. Dezember 2020 19:25 >> To: Adrian Schmutzler <mail@adrianschmutzler.de>; 'Rui Salvaterra' >> <rsalvaterra@gmail.com>; openwrt-devel@lists.openwrt.org >> Subject: Re: [PATCH] ramips/mt7621: refresh the kernel config >> >> >> Hi, >> >> >> On 2020-12-02 18:32, Adrian Schmutzler wrote: >> >> -----Original Message----- >> >> From: openwrt-devel [mailto:openwrt-devel- >> bounces@lists.openwrt.org] >> >> On Behalf Of Rui Salvaterra >> >> Sent: Mittwoch, 2. Dezember 2020 16:42 >> >> To: openwrt-devel@lists.openwrt.org >> >> Cc: Rui Salvaterra <rsalvaterra@gmail.com> >> >> Subject: [PATCH] ramips/mt7621: refresh the kernel config >> >> >> >> The removed config symbols are already enabled by the generic kernel >> >> configuration (or by default), while the added ones are forcefully >> >> enabled by the specific architecture. >> > >> > as already discussed on IRC, this is removing a lot of symbols, which makes >> not much sense to me. >> > >> > It appears that this commit broke the behavior of "make kernel_oldconfig": >> > >> > >> https://github.com/openwrt/openwrt/commit/a8fb12a7d62c94fd1bbda3327 >> 52e >> > 0f8c794f3702 >> > >> > Just reverting that commit results in something that "looks reasonable" >> after make kernel_oldconfig. >> > >> > I'm marking that patch with "changes requested", though it's not really >> Rui's fault in the first place. >> > >> > Let's see where this evolves to. >> Removing a lot of symbols was the whole point behind my commit, and it >> makes sense that any subsequent refresh has a big negative delta. >> >> I tried to be careful about only filtering out auto-generated symbols. > > But then I don't understand why target/linux/generic/config-filter > contains all patterns followed by "is not set", when it's meant to match > =y as well? That's just an artifact to keep it in kconfig.pl syntax (since that's what's being used to filter). The value of the symbols is irrelevant, symbols matching the name will be filtered. - Felix
> -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] > On Behalf Of Felix Fietkau > Sent: Mittwoch, 2. Dezember 2020 19:46 > To: Adrian Schmutzler <mail@adrianschmutzler.de>; 'Rui Salvaterra' > <rsalvaterra@gmail.com>; openwrt-devel@lists.openwrt.org > Subject: Re: [PATCH] ramips/mt7621: refresh the kernel config > > > On 2020-12-02 19:45, Adrian Schmutzler wrote: > >> -----Original Message----- > >> From: Felix Fietkau [mailto:nbd@nbd.name] > >> Sent: Mittwoch, 2. Dezember 2020 19:25 > >> To: Adrian Schmutzler <mail@adrianschmutzler.de>; 'Rui Salvaterra' > >> <rsalvaterra@gmail.com>; openwrt-devel@lists.openwrt.org > >> Subject: Re: [PATCH] ramips/mt7621: refresh the kernel config > >> > >> > >> Hi, > >> > >> > >> On 2020-12-02 18:32, Adrian Schmutzler wrote: > >> >> -----Original Message----- > >> >> From: openwrt-devel [mailto:openwrt-devel- > >> bounces@lists.openwrt.org] > >> >> On Behalf Of Rui Salvaterra > >> >> Sent: Mittwoch, 2. Dezember 2020 16:42 > >> >> To: openwrt-devel@lists.openwrt.org > >> >> Cc: Rui Salvaterra <rsalvaterra@gmail.com> > >> >> Subject: [PATCH] ramips/mt7621: refresh the kernel config > >> >> > >> >> The removed config symbols are already enabled by the generic > >> >> kernel configuration (or by default), while the added ones are > >> >> forcefully enabled by the specific architecture. > >> > > >> > as already discussed on IRC, this is removing a lot of symbols, > >> > which makes > >> not much sense to me. > >> > > >> > It appears that this commit broke the behavior of "make > kernel_oldconfig": > >> > > >> > > >> > https://github.com/openwrt/openwrt/commit/a8fb12a7d62c94fd1bbda3327 > >> 52e > >> > 0f8c794f3702 > >> > > >> > Just reverting that commit results in something that "looks reasonable" > >> after make kernel_oldconfig. > >> > > >> > I'm marking that patch with "changes requested", though it's not > >> > really > >> Rui's fault in the first place. > >> > > >> > Let's see where this evolves to. > >> Removing a lot of symbols was the whole point behind my commit, and > >> it makes sense that any subsequent refresh has a big negative delta. > >> > >> I tried to be careful about only filtering out auto-generated symbols. > > > > But then I don't understand why target/linux/generic/config-filter > > contains all patterns followed by "is not set", when it's meant to > > match =y as well? > That's just an artifact to keep it in kconfig.pl syntax (since that's what's being > used to filter). The value of the symbols is irrelevant, symbols matching the > name will be filtered. Okay, thanks. So, this is essentially a misunderstanding from my side then, as the new concept is not really explained in detail ;-) I will set the patch from Rui back to "New" then, as it's technically not wrong, but I was misled in my judgement. Best Adrian > > - Felix > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Hey, guys, On Wed, 2 Dec 2020 at 19:12, Adrian Schmutzler <mail@adrianschmutzler.de> wrote: > > > -----Original Message----- > > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] > > On Behalf Of Felix Fietkau > > Sent: Mittwoch, 2. Dezember 2020 19:46 > > To: Adrian Schmutzler <mail@adrianschmutzler.de>; 'Rui Salvaterra' > > <rsalvaterra@gmail.com>; openwrt-devel@lists.openwrt.org > > Subject: Re: [PATCH] ramips/mt7621: refresh the kernel config > > > > That's just an artifact to keep it in kconfig.pl syntax (since that's what's being > > used to filter). The value of the symbols is irrelevant, symbols matching the > > name will be filtered. > > Okay, thanks. So, this is essentially a misunderstanding from my side then, as the new concept is not really explained in detail ;-) > > I will set the patch from Rui back to "New" then, as it's technically not wrong, but I was misled in my judgement. I did a simple test, built an image with/without my refreshed config, and the resulting kernel .configs had absolutely no differences, as expected. My Redmi AC2100 also never had any problems (I've had this patch in my tree for almost two weeks now). Thanks, Rui
diff --git a/target/linux/ramips/mt7621/config-5.4 b/target/linux/ramips/mt7621/config-5.4 index b4c8ab1f1c..eaef2e40d1 100644 --- a/target/linux/ramips/mt7621/config-5.4 +++ b/target/linux/ramips/mt7621/config-5.4 @@ -1,24 +1,9 @@ CONFIG_ARCH_32BIT_OFF_T=y CONFIG_ARCH_CLOCKSOURCE_DATA=y -CONFIG_ARCH_HAS_DMA_COHERENT_TO_PFN=y -CONFIG_ARCH_HAS_DMA_PREP_COHERENT=y -CONFIG_ARCH_HAS_DMA_WRITE_COMBINE=y -CONFIG_ARCH_HAS_ELF_RANDOMIZE=y -CONFIG_ARCH_HAS_RESET_CONTROLLER=y -CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE=y -CONFIG_ARCH_HAS_TICK_BROADCAST=y -CONFIG_ARCH_HAS_UNCACHED_SEGMENT=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_MMAP_RND_BITS_MAX=15 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=15 -CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_ARCH_SUSPEND_POSSIBLE=y -CONFIG_ARCH_USE_BUILTIN_BSWAP=y -CONFIG_ARCH_USE_MEMREMAP_PROT=y -CONFIG_ARCH_USE_QUEUED_RWLOCKS=y -CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y -CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT=y -CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y CONFIG_AT803X_PHY=y CONFIG_BLK_MQ_PCI=y CONFIG_BOARD_SCACHE=y @@ -65,6 +50,7 @@ CONFIG_CRYPTO_NULL2=y CONFIG_CRYPTO_RNG2=y CONFIG_CSRC_R4K=y CONFIG_DEBUG_PINCTRL=y +CONFIG_DIMLIB=y CONFIG_DMA_NONCOHERENT=y CONFIG_DMA_NONCOHERENT_CACHE_SYNC=y # CONFIG_DMA_RALINK is not set @@ -108,46 +94,12 @@ CONFIG_GPIO_MT7621=y # CONFIG_GPIO_RALINK is not set CONFIG_GPIO_WATCHDOG=y # CONFIG_GPIO_WATCHDOG_ARCH_INITCALL is not set +CONFIG_GRO_CELLS=y CONFIG_HANDLE_DOMAIN_IRQ=y CONFIG_HARDWARE_WATCHPOINTS=y CONFIG_HAS_DMA=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT_MAP=y -CONFIG_HAVE_ARCH_COMPILER_H=y -CONFIG_HAVE_ARCH_JUMP_LABEL=y -CONFIG_HAVE_ARCH_KGDB=y -CONFIG_HAVE_ARCH_SECCOMP_FILTER=y -CONFIG_HAVE_ARCH_TRACEHOOK=y -CONFIG_HAVE_ASM_MODVERSIONS=y -CONFIG_HAVE_CLK=y -CONFIG_HAVE_CLK_PREPARE=y -CONFIG_HAVE_CONTEXT_TRACKING=y -CONFIG_HAVE_COPY_THREAD_TLS=y -CONFIG_HAVE_C_RECORDMCOUNT=y -CONFIG_HAVE_DEBUG_KMEMLEAK=y -CONFIG_HAVE_DEBUG_STACKOVERFLOW=y -CONFIG_HAVE_DMA_CONTIGUOUS=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -CONFIG_HAVE_FAST_GUP=y -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y -CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_HAVE_GENERIC_VDSO=y -CONFIG_HAVE_IDE=y -CONFIG_HAVE_IOREMAP_PROT=y -CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y -CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y -CONFIG_HAVE_KVM=y -CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y -CONFIG_HAVE_MEMBLOCK_NODE_MAP=y -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -CONFIG_HAVE_NET_DSA=y -CONFIG_HAVE_OPROFILE=y -CONFIG_HAVE_PCI=y -CONFIG_HAVE_PERF_EVENTS=y -CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y -CONFIG_HAVE_RSEQ=y -CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HIGHMEM=y CONFIG_HZ=250 CONFIG_HZ_250=y @@ -177,6 +129,7 @@ CONFIG_MIKROTIK_RB_SYSFS=y CONFIG_MIPS=y CONFIG_MIPS_ASID_BITS=8 CONFIG_MIPS_ASID_SHIFT=0 +CONFIG_MIPS_CBPF_JIT=y CONFIG_MIPS_CLOCK_VSYSCALL=y CONFIG_MIPS_CM=y # CONFIG_MIPS_CMDLINE_BUILTIN_EXTEND is not set @@ -316,6 +269,7 @@ CONFIG_SYS_SUPPORTS_MIPS_CPS=y CONFIG_SYS_SUPPORTS_MULTITHREADING=y CONFIG_SYS_SUPPORTS_SCHED_SMT=y CONFIG_SYS_SUPPORTS_SMP=y +CONFIG_SYS_SUPPORTS_ZBOOT=y CONFIG_TARGET_ISA_REV=2 CONFIG_TICK_CPU_ACCOUNTING=y CONFIG_TIMER_OF=y
The removed config symbols are already enabled by the generic kernel configuration (or by default), while the added ones are forcefully enabled by the specific architecture. Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com> --- Trivial make kernel_oldconfig CONFIG_TARGET=subtarget. target/linux/ramips/mt7621/config-5.4 | 54 ++------------------------- 1 file changed, 4 insertions(+), 50 deletions(-)