Subject: [PATCH] Stop ARM boards crashing when CUPS is loaded - 2.6.35-rc5

From: [email-masked] (Lee Jones)
Date: Fri, 16 Jul 2010 10:08:26 +0100

On 15/07/10 21:06, Russell King - ARM Linux wrote:
> On Thu, Jul 15, 2010 at 01:02:14PM -0700, Andrew Morton wrote:
>>> BugLink: http://bugs.launchpad.net/bugs/601226
>>>
>>> When CUPS loads, it tries to load several drivers that it may need.
>>> When one of these drivers, specifically parport_pc is loaded on ARM
>>> based systems, it causes a segmentation fault as the ISA addresses
>>> which are attempted are not writable on non-PC based architectures.
>>> This code prevents ISA addresses from being attempted except on x86.
>>>
>>
>> That sounds like a pretty serious problem.  But presumably it isn't -
>> otherwise it would have been fixed earlier!

Well it is a problem on OMAP based boards.

I've personally tested it on OMAP3 and OMAP4 based machines. 

Perhaps the memory is not reserved correctly.

>> So what actions are required to trigger this bug and why aren't others
>> seeing it?

Probably because most other chips either manage to reserve the memory 
successfully, or do not attempt to load the parport_pc driver, either as
a module or built-in.

All I have to do to recreate this bug is load the module or build in the
parport_pc driver.

> Note that we have machines which have ISA parallel ports, so it's not
> this simple.

Do they have ISA parallel ports, or do they just pretend to?

I found this scattered about:

/*
 * We don't actually have real ISA nor PCI buses, but there is so many
 * drivers out there that might just work if we fake them...
 */

Clearly parport_pc isn't one of them. :)

> Why not just avoid selecting and building parport_pc on these machines?

> I mean, the Beagleboard doesn't have PCI nor ISA, so why is parport_pc
> being built for production use?

I am happy to make a Kconfig change to disallow OMAP builds from building
the parport_pc driver. Do you think this would be more sensible?