2013-09-12 18:55:17

by Mark Salter

[permalink] [raw]
Subject: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

Remove messy dependencies from PARPORT_PC by having it depend on one
Kconfig symbol (ARCH_MAY_HAVE_PC_PARPORT) and having architectures
which need it declare ARCH_MAY_HAVE_PC_PARPORT in arch/*/Kconfig.
New architectures are unlikely to need PARPORT_PC, so this avoids
having an ever growing list of architectures to exclude. Those
architectures which do declare ARCH_MAY_HAVE_PC_PARPORT in this
patch are the ones which have an asm/parport.h.

Signed-off-by: Mark Salter <[email protected]>
---
arch/alpha/Kconfig | 3 +++
arch/arc/Kconfig | 3 +++
arch/arm/Kconfig | 3 +++
arch/ia64/Kconfig | 3 +++
arch/m68k/Kconfig | 4 ++++
arch/microblaze/Kconfig | 3 +++
arch/mips/Kconfig | 3 +++
arch/parisc/Kconfig | 3 +++
arch/powerpc/Kconfig | 3 +++
arch/sh/Kconfig | 3 +++
arch/sparc/Kconfig | 4 ++++
arch/tile/Kconfig | 3 +++
arch/unicore32/Kconfig | 3 +++
arch/x86/Kconfig | 3 +++
drivers/parport/Kconfig | 4 +---
15 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 082d9b4..0f8fa2c 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -520,6 +520,9 @@ config EISA
config ARCH_MAY_HAVE_PC_FDC
def_bool y

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
config SMP
bool "Symmetric multi-processing support"
depends on ALPHA_SABLE || ALPHA_LYNX || ALPHA_RAWHIDE || ALPHA_DP264 || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_GENERIC || ALPHA_SHARK || ALPHA_MARVEL
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index 68fcbb2..fb24bb2 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -70,6 +70,9 @@ config HAVE_LATENCYTOP_SUPPORT
config NO_DMA
def_bool n

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
source "init/Kconfig"
source "kernel/Kconfig.freezer"

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index b5eee26..5ded688 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -71,6 +71,9 @@ config ARM
Europe. There is an ARM Linux project with a web page at
<http://www.arm.linux.org.uk/>.

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
config ARM_HAS_SG_CHAIN
bool

diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index a86a56d..3ae7dd3 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -126,6 +126,9 @@ config AUDIT_ARCH
bool
default y

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
menuconfig PARAVIRT_GUEST
bool "Paravirtualized guest support"
depends on BROKEN
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 821170e..dadea9a 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -35,6 +35,10 @@ config ARCH_HAS_ILOG2_U32
config ARCH_HAS_ILOG2_U64
bool

+config ARCH_MAY_HAVE_PC_PARPORT
+ depends on ISA
+ def_bool y
+
config GENERIC_HWEIGHT
bool
default y
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
index 3f6659c..00c3443 100644
--- a/arch/microblaze/Kconfig
+++ b/arch/microblaze/Kconfig
@@ -67,6 +67,9 @@ config LOCKDEP_SUPPORT
config HAVE_LATENCYTOP_SUPPORT
def_bool y

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
source "init/Kconfig"

source "kernel/Kconfig.freezer"
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 71f15e7..e8d5d33 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -861,6 +861,9 @@ config FW_ARC
config ARCH_MAY_HAVE_PC_FDC
bool

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
config BOOT_RAW
bool

diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index aa399a5..d2dcd1b 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -102,6 +102,9 @@ config ARCH_MAY_HAVE_PC_FDC
depends on BROKEN
default y

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
source "init/Kconfig"

source "kernel/Kconfig.freezer"
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 6b7530f..e706eea 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -169,6 +169,9 @@ config ARCH_MAY_HAVE_PC_FDC
bool
default !PPC_PSERIES || PCI

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
config PPC_OF
def_bool y

diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 1018ed3..f49c057 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -143,6 +143,9 @@ config HAVE_LATENCYTOP_SUPPORT
config ARCH_HAS_ILOG2_U32
def_bool n

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
config ARCH_HAS_ILOG2_U64
def_bool n

diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index 1570ad2..493867e 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -197,6 +197,10 @@ config ARCH_MAY_HAVE_PC_FDC
bool
default y

+config ARCH_MAY_HAVE_PC_PARPORT
+ depends on SPARC64 && PCI
+ def_bool y
+
config EMULATED_CMPXCHG
bool
default y if SPARC32
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index 932fa14..40c3988 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -88,6 +88,9 @@ config NEED_DMA_MAP_STATE
config ARCH_HAS_DMA_SET_COHERENT_MASK
bool

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
config LOCKDEP_SUPPORT
def_bool y

diff --git a/arch/unicore32/Kconfig b/arch/unicore32/Kconfig
index 41bcc00..111df43 100644
--- a/arch/unicore32/Kconfig
+++ b/arch/unicore32/Kconfig
@@ -62,6 +62,9 @@ config GENERIC_CALIBRATE_DELAY
config ARCH_MAY_HAVE_PC_FDC
bool

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
config ZONE_DMA
def_bool y

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 30c40f0..aef54ff 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -180,6 +180,9 @@ config ARCH_MAY_HAVE_PC_FDC
def_bool y
depends on ISA_DMA_API

+config ARCH_MAY_HAVE_PC_PARPORT
+ def_bool y
+
config RWSEM_XCHGADD_ALGORITHM
def_bool y

diff --git a/drivers/parport/Kconfig b/drivers/parport/Kconfig
index 70694ce..fa005a9 100644
--- a/drivers/parport/Kconfig
+++ b/drivers/parport/Kconfig
@@ -35,9 +35,7 @@ if PARPORT

config PARPORT_PC
tristate "PC-style hardware"
- depends on (!SPARC64 || PCI) && !SPARC32 && !M32R && !FRV && !S390 && \
- (!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && \
- !XTENSA && !CRIS && !H8300
+ depends on ARCH_MAY_HAVE_PC_PARPORT

---help---
You should say Y here if you have a PC-style parallel port. All
--
1.8.3.1


2013-09-12 19:04:18

by Chris Metcalf

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On 9/12/2013 2:53 PM, Mark Salter wrote:
> Remove messy dependencies from PARPORT_PC by having it depend on one
> Kconfig symbol (ARCH_MAY_HAVE_PC_PARPORT) and having architectures
> which need it declare ARCH_MAY_HAVE_PC_PARPORT in arch/*/Kconfig.
> New architectures are unlikely to need PARPORT_PC, so this avoids
> having an ever growing list of architectures to exclude. Those
> architectures which do declare ARCH_MAY_HAVE_PC_PARPORT in this
> patch are the ones which have an asm/parport.h.
>
> Signed-off-by: Mark Salter <[email protected]>

You can actually omit the arch/tile change, since as far as I know there's no way for tile to have PARPORT_PC.

--
Chris Metcalf, Tilera Corp.
http://www.tilera.com

2013-09-12 19:11:26

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On Thu, Sep 12, 2013 at 8:53 PM, Mark Salter <[email protected]> wrote:
> Remove messy dependencies from PARPORT_PC by having it depend on one
> Kconfig symbol (ARCH_MAY_HAVE_PC_PARPORT) and having architectures
> which need it declare ARCH_MAY_HAVE_PC_PARPORT in arch/*/Kconfig.
> New architectures are unlikely to need PARPORT_PC, so this avoids
> having an ever growing list of architectures to exclude. Those
> architectures which do declare ARCH_MAY_HAVE_PC_PARPORT in this
> patch are the ones which have an asm/parport.h.
>
> Signed-off-by: Mark Salter <[email protected]>

Thanks!

For the m68k part:
Acked-by: Geert Uytterhoeven <[email protected]>

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2013-09-12 19:14:11

by Richard Henderson

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On 09/12/2013 11:53 AM, Mark Salter wrote:
> diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
> index 082d9b4..0f8fa2c 100644
> --- a/arch/alpha/Kconfig
> +++ b/arch/alpha/Kconfig
> @@ -520,6 +520,9 @@ config EISA
> config ARCH_MAY_HAVE_PC_FDC
> def_bool y
>
> +config ARCH_MAY_HAVE_PC_PARPORT
> + def_bool y
> +

Acked-by: Richard Henderson <[email protected]>


r~

2013-09-12 19:19:50

by Mark Salter

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On Thu, 2013-09-12 at 15:04 -0400, Chris Metcalf wrote:
> On 9/12/2013 2:53 PM, Mark Salter wrote:
> > Remove messy dependencies from PARPORT_PC by having it depend on one
> > Kconfig symbol (ARCH_MAY_HAVE_PC_PARPORT) and having architectures
> > which need it declare ARCH_MAY_HAVE_PC_PARPORT in arch/*/Kconfig.
> > New architectures are unlikely to need PARPORT_PC, so this avoids
> > having an ever growing list of architectures to exclude. Those
> > architectures which do declare ARCH_MAY_HAVE_PC_PARPORT in this
> > patch are the ones which have an asm/parport.h.
> >
> > Signed-off-by: Mark Salter <[email protected]>
>
> You can actually omit the arch/tile change, since as far as I know there's no way for tile to have PARPORT_PC.
>

Yeah, I thought that the list of architectures in the patch would end up
being a superset of what was really needed. Especially for those which
used the generic parport.h. I can drop tile from this patch but you may
want to get rid of the parport.h from arch/tile/include/asm/Kbuild.

2013-09-12 20:09:22

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On 09/12/2013 11:53 AM, Mark Salter wrote:
>
> diff --git a/drivers/parport/Kconfig b/drivers/parport/Kconfig
> index 70694ce..fa005a9 100644
> --- a/drivers/parport/Kconfig
> +++ b/drivers/parport/Kconfig
> @@ -35,9 +35,7 @@ if PARPORT
>
> config PARPORT_PC
> tristate "PC-style hardware"
> - depends on (!SPARC64 || PCI) && !SPARC32 && !M32R && !FRV && !S390 && \
> - (!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && \
> - !XTENSA && !CRIS && !H8300
> + depends on ARCH_MAY_HAVE_PC_PARPORT
>
> ---help---
> You should say Y here if you have a PC-style parallel port. All
>

I'm somewhat astonished that this driver is that problematic. It is
really just a very basic PIO interface, at least in the absence of EPP/ECP.

It is, of course, also largely a dead interface at this point so it
probably doesn't matter.

-hpa

2013-09-12 20:32:11

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On Thu, Sep 12, 2013 at 02:53:58PM -0400, Mark Salter wrote:
> Remove messy dependencies from PARPORT_PC by having it depend on one
> Kconfig symbol (ARCH_MAY_HAVE_PC_PARPORT) and having architectures
> which need it declare ARCH_MAY_HAVE_PC_PARPORT in arch/*/Kconfig.
> New architectures are unlikely to need PARPORT_PC, so this avoids
> having an ever growing list of architectures to exclude. Those
> architectures which do declare ARCH_MAY_HAVE_PC_PARPORT in this
> patch are the ones which have an asm/parport.h.

It is much nicer if you provide a config symbol only once.
And then let the architectures who want it select this symbol.

This is the pattern we use for similar things in many places today,
so it is best to follow that pattern.

Sam

2013-09-12 20:49:43

by Russell King - ARM Linux

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On Thu, Sep 12, 2013 at 10:32:04PM +0200, Sam Ravnborg wrote:
> On Thu, Sep 12, 2013 at 02:53:58PM -0400, Mark Salter wrote:
> > Remove messy dependencies from PARPORT_PC by having it depend on one
> > Kconfig symbol (ARCH_MAY_HAVE_PC_PARPORT) and having architectures
> > which need it declare ARCH_MAY_HAVE_PC_PARPORT in arch/*/Kconfig.
> > New architectures are unlikely to need PARPORT_PC, so this avoids
> > having an ever growing list of architectures to exclude. Those
> > architectures which do declare ARCH_MAY_HAVE_PC_PARPORT in this
> > patch are the ones which have an asm/parport.h.
>
> It is much nicer if you provide a config symbol only once.
> And then let the architectures who want it select this symbol.
>
> This is the pattern we use for similar things in many places today,
> so it is best to follow that pattern.

Yes, and if you do, please be sensitive to the files you're editing.
If you find yourself adding a "select" statement at the bottom of an
already sorted list, then you're probably going to make someone less
than happy.

(I've just re-sorted arch/arm/Kconfig's select statements after they've
become mis-sorted - originally sorted alphabetically at akpm's request
to avoid conflicts. It now has a comment at the end of the main list
asking for new additions to be appropriately placed.)

2013-09-12 20:53:57

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)


* H. Peter Anvin <[email protected]> wrote:

> On 09/12/2013 11:53 AM, Mark Salter wrote:
> >
> > diff --git a/drivers/parport/Kconfig b/drivers/parport/Kconfig
> > index 70694ce..fa005a9 100644
> > --- a/drivers/parport/Kconfig
> > +++ b/drivers/parport/Kconfig
> > @@ -35,9 +35,7 @@ if PARPORT
> >
> > config PARPORT_PC
> > tristate "PC-style hardware"
> > - depends on (!SPARC64 || PCI) && !SPARC32 && !M32R && !FRV && !S390 && \
> > - (!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && \
> > - !XTENSA && !CRIS && !H8300
> > + depends on ARCH_MAY_HAVE_PC_PARPORT
> >
> > ---help---
> > You should say Y here if you have a PC-style parallel port. All
> >
>
> I'm somewhat astonished that this driver is that problematic. It is
> really just a very basic PIO interface, at least in the absence of
> EPP/ECP.
>
> It is, of course, also largely a dead interface at this point so it
> probably doesn't matter.

So, my collection of 'randconfig kernel crashers' has this exclusion and
comment:

--- linux.orig/drivers/block/Kconfig
+++ linux/drivers/block/Kconfig
@@ -77,6 +77,11 @@ config GDROM
config PARIDE
tristate "Parallel port IDE device support"
depends on PARPORT_PC
+
+ # the probe can hang during bootup on non-PARIDE boxes
+ depends on BROKEN_BOOT_ALLOWED
+ select BROKEN_BOOT if PARIDE = y
+

So at least some uses of PARPORT_PC are unsafe. (might easily be a bug in
PARIDE)

Thanks,

Ingo

2013-09-12 20:56:24

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On 09/12/2013 01:53 PM, Ingo Molnar wrote:
>>
>> I'm somewhat astonished that this driver is that problematic. It is
>> really just a very basic PIO interface, at least in the absence of
>> EPP/ECP.
>>
>> It is, of course, also largely a dead interface at this point so it
>> probably doesn't matter.
>
> So, my collection of 'randconfig kernel crashers' has this exclusion and
> comment:
>
> --- linux.orig/drivers/block/Kconfig
> +++ linux/drivers/block/Kconfig
> @@ -77,6 +77,11 @@ config GDROM
> config PARIDE
> tristate "Parallel port IDE device support"
> depends on PARPORT_PC
> +
> + # the probe can hang during bootup on non-PARIDE boxes
> + depends on BROKEN_BOOT_ALLOWED
> + select BROKEN_BOOT if PARIDE = y
> +
>
> So at least some uses of PARPORT_PC are unsafe. (might easily be a bug in
> PARIDE)
>

That I would believe.

-hpa

2013-09-12 21:22:42

by Mark Salter

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On Thu, 2013-09-12 at 22:32 +0200, Sam Ravnborg wrote:
> It is much nicer if you provide a config symbol only once.
> And then let the architectures who want it select this symbol.
>
> This is the pattern we use for similar things in many places today,
> so it is best to follow that pattern.

Okay, I'm ahead of you on that. I actually had two versions of the
patch. The other uses select. If that is the preferred way these
days, I'll go with it for V2 of the patch.

2013-09-13 16:40:11

by Sam Ravnborg

[permalink] [raw]
Subject: Re: [PATCH] Kconfig cleanup (PARPORT_PC dependencies)

On Thu, Sep 12, 2013 at 05:21:52PM -0400, Mark Salter wrote:
> On Thu, 2013-09-12 at 22:32 +0200, Sam Ravnborg wrote:
> > It is much nicer if you provide a config symbol only once.
> > And then let the architectures who want it select this symbol.
> >
> > This is the pattern we use for similar things in many places today,
> > so it is best to follow that pattern.
>
> Okay, I'm ahead of you on that. I actually had two versions of the
> patch. The other uses select. If that is the preferred way these
> days, I'll go with it for V2 of the patch.
Perfect - please use this.

Sam