On Tue, 2010-03-23 at 19:02 +0100, Dominik Brodowski wrote:
> > If you make PCMCIA smart enough to avoid these low ports, do we still
> > need these &ioport_resource and &iomem_resource checks?  Having two
> > mechanisms will lead to more complicated behavior and more special
> > cases.
> 
> Well, it aren't only the low ports (<0x100) I'm concerned about, it's also
> (and especially on pre-2008 systems) ports in higher areas
> (0x100 < x < 0xffff). If we don't use _CRS, we need to be more careful to
> avoid accidentally hitting wrong I/O-ports.

> From: Dominik Brodowski <[email protected]>
> Date: Tue, 23 Mar 2010 16:05:00 +0100
> Subject: [PATCH] pcmcia: do not use ioports < 0x100 on x86
> 
> On x86 systems using ACPI _CRS information -- now the default for
> post-2008 systems -- the PCI root bus no longer pretends to be
> offering the root ioport_resource. To avoid accidentally hitting
> some platform / system device, use only I/O ports >= 0x100 for
> PCMCIA devices on x86.
> 
> Reported-by: Komuro <[email protected]>
> CC: Bjorn Helgaas <[email protected]>
> Signed-off-by: Dominik Brodowski <[email protected]>
> 
> diff --git a/drivers/pcmcia/rsrc_nonstatic.c b/drivers/pcmcia/rsrc_nonstatic.c
> index 4663b3f..dcc6021 100644
> --- a/drivers/pcmcia/rsrc_nonstatic.c
> +++ b/drivers/pcmcia/rsrc_nonstatic.c
> @@ -810,6 +810,13 @@ static int adjust_io(struct pcmcia_socket *s, unsigned 
> int action, unsigned long
>       unsigned long size = end - start + 1;
>       int ret = 0;
>  
> +#if defined(CONFIG_X86)
> +     /* on x86, avoid anything < 0x100 for it is often used for
> +      * legacy platform devices */
> +     if (start < 0x100)
> +             start = 0x100;
> +#endif

This looks OK to me (but we've already established that I don't know
anything about PCMCIA :)).  I do wonder whether we should have a generic
mechanism to define areas we should avoid, along the lines of
PCIBIOS_MIN_IO and PCIBIOS_MIN_CARDBUS_IO.  PNP should probably avoid
the same areas.

Which reminds me, what little I gleaned from the MindShare PCMCIA book
suggests that PCMCIA devices are similar to PNPBIOS devices in some ways
-- you get a list of possible resource assignments from CIS, sometimes
those assignments are fixed, other times they're programmable, and then
you pick something that works.  I wonder if there'd be any point in
integrating PNP and PCMCIA somehow.

Bjorn

>       if (end < start)
>               return -EINVAL;
>  


_______________________________________________
Linux PCMCIA reimplementation list
http://lists.infradead.org/mailman/listinfo/linux-pcmcia

Reply via email to