Commit Graph

1071 Commits

Author SHA1 Message Date
Keith Packard
103507af0c Merge remote branch 'vignatti/bus-cleanup' 2010-05-19 22:27:53 -07:00
Peter Hutterer
c620a1c0a4 xfree86: fix typo in optionTypeToSting.
Because we don't want anyone to get hurt.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-05-19 22:22:54 -07:00
Tiago Vignatti
99fcf655bd xfree86: remove PCI dependency from InitOutput
All functions that touch PCI and BUS were moved to their own files, organizing
the mess inside the InitOutput. Now, inside InitOutput, mostly accesses to
buses are coordinated by the new xf86BusConfig.

Two PCI probe functions just changed the name and a procedure to receive the
isolate devices parameters was created also, named xf86PciIsolateDevice.

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:34:41 +03:00
Tiago Vignatti
0dd299864a xfree86: remove xf86EnableAccess
It's RAC remnant. This was substituted by xf86VGAarbiter{Lock, Unlock}
mechanism.

It's an API break, but the few drivers using it were covered already with
macros to avoid problems.

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:34:35 +03:00
Tiago Vignatti
f28515b5f7 xfree86: bus: remove SetSIGIOForState and simplify the code
Also removed some dumb debug messages.

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:34:29 +03:00
Tiago Vignatti
211ca67e4d xfree86: bus: fb drivers might want to use vga arbitration either
Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:34:24 +03:00
Tiago Vignatti
2464eb7d56 xfree86: bus: simplify entity related hooks
Remove some out dated commentaries either.

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:34:15 +03:00
Tiago Vignatti
971768e688 xfree86: bus: enable declaration of sparc function as its code usage
The code in xf86sbusBus.c seems too OS-specific to be usable on OpenBSD.

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:34:10 +03:00
Tiago Vignatti
a70ec0d136 xfree86: bus: rework xf86PostProbe logic and remove useless log info
Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:34:03 +03:00
Tiago Vignatti
2f7d630a1e xfree86: bus: reuse already assigned variable when fb driver claimed
Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:33:57 +03:00
Tiago Vignatti
964f29bb80 xfree86: bus: fix Enter/Leave accesses behaviour
Okay, seems we're not using extensively such hooks in fact. But fix the
expected behaviour at least.

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:33:44 +03:00
Tiago Vignatti
b37462b4da xfree86: remove unused xf86AccessInit()
The function was only initializing the boolean xf86ResAccessEnter, which
couldn't get any other value in the life of the server.

The only possible, though suspicious, code was in xf86AccessLeave(), which
could be triggered if AbortDDX is called before xf86AccessInit(). Even so,
such change is safety because no driver would have configured any entity leave
procedure at this point.

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-19 18:33:37 +03:00
Peter Hutterer
d88ba7721d xfree86: Add option parsing for percent options.
In some cases, an option of "50%" would be preferable over fixed value
configuration - especially if the actual values are autoprobed.
Add a new set of functions to parse percent values from configurations.

The percent value parsing differs slightly - if the option is not to marked
as used (e.g. xf86CheckPercentOption()), no warning is emitted to the log
file if the value is not a percent value. This allows double-options (either
as % or as absolute number) without warnings.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-05-18 15:43:51 -07:00
Julien Cristau
5a387cf6d2 Only link Xorg with libconfig.la
Other DDXs don't use input hotplugging since config_init was moved to
the DDX in commit d33adcdf03, so there's
no need to link this in.

Signed-off-by: Julien Cristau <jcristau@debian.org>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-05-17 09:41:16 -07:00
Jamey Sharp
6a84cd9434 Replace dixChangeGC with calls directly to the right variant.
Signed-off-by: Jamey Sharp <jamey@minilop.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2010-05-13 17:14:07 -07:00
Jamey Sharp
e2929db7b7 dixChangeGC callers: Use ChangeGCVal instead of XID almost everywhere.
The exceptions are ProcChangeGC and CreateGC.

Signed-off-by: Jamey Sharp <jamey@minilop.net>
Reviewed-by: Keith Packard <keithp@keithp.com>
2010-05-13 17:13:48 -07:00
Jeremy Huddleston
bca85e2e12 Use _X_ATTRIBUTE_PRINTF _X_DEPRECATED _X_NORETURN
Use the values from xproto rather than duplicating the effort

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-05-13 10:03:23 -07:00
Alan Coopersmith
f281db9a5e Remove ResNoAvoid definition, missed in the RAC removal
ResNoAvoid is #defined to ResBios, but ResBios was removed
from xf86str.h in 4b42448a23

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-05-13 04:20:34 -07:00
Jamey Sharp
04bad1b8a1 Kill ChangeGC in favor of dixChangeGC.
This doesn't change any behavior, but it isn't clear whether NullClient
is correct in all cases. As ajax says,

> For most of these changes, I think it's correct to use NullClient,
> since they are server-initiated changes and should not fail for (eg)
> xace reasons. ... At any rate, you're certainly not changing any
> semantics by leaving them all as NullClient, so this patch can't be
> more wrong than before.

The call in CreateGC is particularly questionable.

Signed-off-by: Jamey Sharp <jamey@minilop.net>
Reviewed-by: Adam Jackson <ajax@redhat.com>
2010-05-12 18:10:01 -07:00
Mikhail Gusarov
3f3ff971ec Replace X-allocation functions with their C89 counterparts
The only remaining X-functions used in server are XNF*, the rest is converted to
plain alloc/calloc/realloc/free/strdup.

X* functions are still exported from server and x* macros are still defined in
header file, so both ABI and API are not affected by this change.

Signed-off-by: Mikhail Gusarov <dottedmag@dottedmag.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2010-05-13 00:22:37 +07:00
Peter Hutterer
10de9e8ee3 xfree86: dga needs to use the master keyboard state (#27573)
GetPairedDevice() may not always return the keyboard, resulting in a
null-pointer dereference when accessing the XKB state.
For floating devices, the GetMaster() returns the device itself.

X.Org Bug 27573 <http://bugs.freedesktop.org/show_bug.cgi?id=27573>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Tested-by: Ben Hutchings <ben@decadent.org.uk>
2010-05-11 13:33:19 +10:00
Keith Packard
986d46144b Merge remote branch 'jamey/for-keith'
Conflicts:
	hw/xfree86/common/xf86xv.c
2010-04-30 12:40:53 -07:00
Keith Packard
a974c8e7cb Merge remote branch 'whot/for-keith' 2010-04-30 12:33:00 -07:00
Keith Packard
0e91e19f78 Merge remote branch 'vignatti/for-keith' 2010-04-30 12:27:51 -07:00
Peter Hutterer
02e86221b8 xfree86: a missing input driver is not an error.
We call NIDR on all devices that make it through the config backend.
Including some that have no driver assigned to them (/dev/input/mouse0 for
example). Those ones then simply get ignored by NIDR, but this should not be
noted as an error in the log file.

X_INFO is sufficient, and it may just prevent some bugreports.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Julien Cristau <jcristau@debian.org>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
2010-04-30 11:33:25 +10:00
Adam Jackson
ffaae7c0c6 Remove mibank support
Banked framebuffers are so 1990.  As of 7.4 the only drivers remaining
that used this were chips, neomagic, trident, and vesa.  vesa only used
it when not using shadowfb, which is broadly undesirable anyway, and no
longer uses it at all as of 2.3.0.  neomagic never used it by default,
and support for it is gone in git master.  The other two effectively
only ever used it for ISA chips; since ISA support is now gone from
the server, they have been modified to only compile mibank support when
ISA support is available.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-04-27 11:14:03 -07:00
Jamey Sharp
b5b8f91b82 xfree86: use screen privates for Xv offscreen images.
This replaces a globally-allocated array that depended on MAXSCREENS.

Signed-off-by: Jamey Sharp <jamey@minilop.net>
Acked-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
2010-04-27 11:03:01 -07:00
Pierre-Loup A. Griffais
41bdb6c003 xf86: Don't crash when switching modes through RandR without owning the VT.
While VT-switched, FB access is disabled and should remain so. Trying to switch
modes in that state would re-enable it, potentially causing crashes if trying
to access it before the driver has recovered from the mode switch.

Signed-off-by: Pierre-Loup A. Griffais <pgriffais@nvidia.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-04-26 20:15:17 -07:00
Tiago Vignatti
edbc56c088 include: remove couple of unused structures fields and bump ABI
Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
2010-04-26 14:53:12 +03:00
Tiago Vignatti
64fd39f2f0 xfree86: no need to assign numScreens again
numScreens is always being assigned to 0 in dix for any server generation.

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2010-04-23 16:13:57 +03:00
Tiago Vignatti
b61870595b xfree86: track screens' installed colormaps as screen privates
Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Jamey Sharp <jamey@minilop.net>
2010-04-23 15:50:23 +03:00
Jamey Sharp
7c9733d063 xfree86: use screen privates for Xv offscreen images.
This replaces a globally-allocated array that depended on MAXSCREENS.

Signed-off-by: Jamey Sharp <jamey@minilop.net>
Acked-by: Tiago Vignatti <tiago.vignatti@nokia.com>
2010-04-23 15:30:03 +03:00
Keith Packard
28b7b2b8d0 unifdef -B -DRENDER to always include RENDER code
This patch was created with:

git ls-files '*.[ch]' | while read f; do unifdef -B -DRENDER -o $f $f; done

Signed-off-by: Keith Packard <keithp@keithp.com>
2010-04-19 09:26:10 -07:00
Benjamin Tissoires
a780e5b363 xf86ScaleAxis: support for high resolution devices
High resolution devices was generating integer overflow.
For instance the wacom Cintiq 21UX has an axis value up to
87000. Thus the term (dSx * (Cx - Rxlow)) is greater than
MAX_INT32.

Using 64bits integer avoids such problem.

Signed-off-by: Philippe Ribet <ribet@cena.fr>
Signed-off-by: Benjamin Tissoires <tissoire@cena.fr>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2010-04-16 14:39:50 +10:00
Dan Nicholson
adbbc66108 xfree86: Fix priority ordering for ignoring input classes
Commit 8736d112af changed the priority
ordering of the InputClass option merging to be "last match wins". This
fixes the handling of Option "Ignore" to follow that logic.

Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
2010-04-11 07:29:23 -07:00
Dan Nicholson
95f01bdfee xfree86: Search for a system xorg.conf.d
In addition to the conf files found in /etc/X11 or $sysconfdir/X11 used
for local administration, we also reserve a system directory for vendor
and package usage. The simple search path is:

	/usr/share/X11/xorg.conf.d
	$datadir/X11/xorg.conf.d

Files from these directories will have the lowest config priority. The
directory $datadir/X11/xorg.conf.d is exported from xorg-server.pc in
the variable "sysconfigdir". Packages should install their .conf files
to the directory specified by:

	`pkg-config --variable=sysconfigdir xorg-server`

Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2010-04-08 15:21:01 +10:00
Dan Nicholson
a1bae63dc6 xfree86: Set a saner search path for xorg.conf.d
There's no reason to carry all the oddities from xorg.conf like appended
hostname to the search path for xorg.conf.d. This changes it to something
very simple:

	/etc/X11/<cmdline>
	$sysconfdir/X11/<cmdline>
	/etc/X11/xorg.conf.d
	$sysconfdir/X11/xorg.conf.d

Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2010-04-08 15:21:01 +10:00
Tiago Vignatti
b9ad452ec9 xfree86: die gracefully in the vga arbiter if AddScreen fails
vga arbiter will be locked in one device while AbortDDX will call LeaveVT
routines from the other device. Fail!

Signed-off-by: Tiago Vignatti <tiago.vignatti@nokia.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-04-02 00:09:20 -07:00
Ruediger Oertel
67b814d9b2 Remove now obsolete function chooseVideoDriver
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-03-29 12:01:46 -07:00
Ruediger Oertel
1dd5fbc5a4 xfree86: Handle driver autoconfiguration when .conf files exist
When doing driver autoconfiguration with some parts of the config file
present but no driver set (e.g. only input configuration) fix the case
that we may have multiple drivers to try.

Create a screen section for each driver and let them be tried in a row.

Signed-off-by: Ruediger Oertel <ro@suse.de>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
Tested-by: Timo Aaltonen <timo.aaltonen@aalto.fi>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-03-29 12:01:15 -07:00
Peter Hutterer
70bd02f2ea xfree86: merge driver from the input class into the options.
A driver that is assigned by an input class is only present as idev->driver.
The driver itself has no access to this information once PreInit is called.
For devices that rely on chain-hotplugging (wacom), this means that for the
second device the driver information is lost and the second device cannot be
initialized through NewInputDeviceRequest. Although this could be worked
around by hardcoding the driver name in the wacom driver, having the
assigned driver in the options seems like the better solution.

This issue only manifests itself with the udev backend. With HAL, the driver
is assigned by HAL and the option is duplicated in config/hal.c.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
2010-03-26 15:30:55 +10:00
Oliver McFadden
e7ff956638 common: xf86Configure: alloc_strlen: Allocated memory does not have space for the terminating NUL of the string
buffer_alloc: Called allocating function "realloc" which allocated memory dictated by parameter "len + strlen(displaySize_string)"
alloc_strlen: Allocated memory does not have space for the terminating NUL of the string
var_assign: Assigned "ptr->mon_comment" to storage allocated by "realloc(ptr->mon_comment, len + strlen(displaySize_string))"

Signed-off-by: Oliver McFadden <oliver.mcfadden@nokia.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-03-21 15:20:53 -07:00
Peter Hutterer
df9f327304 xfree86: fix xf86Config.c build error in --enable-debug mode. (#26971)
xf86Config.c: In function 'configInputDevices':
xf86Config.c:1514: error: request for member 'lay_identifier' in something
not a structure or union
make[5]: *** [xf86Config.lo] Error 1

Introduced with e1165632bd.

X.Org Bug 26971 <http://bugs.freedesktop.org/show_bug.cgi?id=26971>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Dan Nicholson <dbn.lists@gmail.com>
2010-03-11 08:48:49 +10:00
Peter Hutterer
1160681032 xfree86: don't warn about nonexisting core pointer/keyboard in config.
In the vast majority of cases there is no xorg.conf that specifies a core
pointer/keyboard. Skip this warning, since we'll get another notification
about how the server relies on the config backend for input devices anyway.

Leave the warning in for the error case (AEI off).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Fernando Carrijo <fcarrijo@yahoo.com.br>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
2010-03-11 08:48:49 +10:00
Keith Packard
de86a3a344 Allow for missing or disabled compat_output
When the compat output is missing (I don't think this is actually
possible), or is disabled (and hence has no crtc), we would like to
avoid dereferencing NULL pointers. This patch creates inline functions
to extract the current compat output, crtc or associated RandR crtc
structure, carefully checking for NULL pointers everywhere.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-02-25 12:48:27 -08:00
Rami Ylimaki
5b9a52be7e os: Prevent core dump from being truncated.
The problem fixed by this patch can be reproduced on Linux with the
following steps.
- Access NULL pointer intentionally in ProcessOtherEvent on key press.
- Instead of saving core dump to a file, write it into a pipe.
  echo "|/usr/sbin/my-core-dumper" > /proc/sys/kernel/core_pattern
- Dump the core by pressing a key.

While the core is being dumped into the pipe, the smart schedule timer
will cause a pending SIGALRM. Linux kernel stops writing data to the
pipe when there are pending signals. This causes the core dump to be
truncated. On my system I'm expecting a 6 MB dump but the size will be
60 kB instead. The problem is solved if we block the SIGALRM caused by
expired smart schedule timer.

I haven't been able to reproduce this problem in the following cases.
- Save core dump to a file instead of a pipe.
- kill -SEGV `pidof Xorg`
- Press a key to dump core while gdb is attached to Xorg.
- Give option -dumbSched to Xorg.

Also note that the fix works only when NoTrapSignals has the default
value FALSE. The problem can still be reproduced if error signals
aren't trapped. In addition to pending SIGALRM, there is a similar
problem with pending SIGIO from the keyboard driver during core dump.

Signed-off-by: Rami Ylimaki <ext-rami.ylimaki@nokia.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-02-17 23:20:52 -08:00
Dan Nicholson
8736d112af xfree86: Reorder InputClass option priorities
Currently the config and InputClasses are merged together so that the
options from the config backend have the highest priority. This is bad
since it means options such as a default XKB layout set by the backend
cannot be changed by the user.

This patch changes order of precedence to be:

1. xorg.conf
2. xorg.conf.d (later files have higher priority)
3. config backend

In order to allow this ordering, the config parsing has been changed to
read the xorg.conf.d files before xorg.conf. This has the consequence
that the core device picking which looks for the first InputDevice may
not find it in xorg.conf.

Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2010-02-15 15:27:42 +10:00
Peter Hutterer
d33adcdf03 dix: move config_init into the DDX.
The only DDX currently using hotplugging is the xfree86 one and it looks
like it'll stay that way for a bit. Move the initialization to the DDX,
since Xephyr, Xnest, and friends don't need HAL or udev notifications.

Add CloseInput (counterpart to InitInput) to be able to clean up the config
initialization from the DDX as well.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Julien Cristau <jcristau@debian.org>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
2010-02-15 09:15:18 +10:00
Soeren Sandmann
0b73f98cbd xfree86: Add qxl driver to the autoconfig logic
The qxl driver is for the QXL virtualized graphics device.

Signed-off-by: Søren Sandmann Pedersen <ssp@redhat.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
2010-02-12 14:48:11 -08:00
Peter Hutterer
c6d9bc092c Add tag matching to input attributes.
Tags may be a list of comma-separated strings that match against a MatchTag
InputClass section. If any of the tags specified for a device match against
the MatchTag of the section, this match is evaluated true and passed on to
the next match condition.

Tags are specified as "input.tags" (hal) or "ID_INPUT.tags" (udev), the
value of the tags is case-sensitive and require an exact match (not a
substring match).

i.e. "quirk" will not match "QUIRK", "need_quirk" or "quirk_needed".

Example configuration:
udev:
    ENV{ID_INPUT.tags}="foo,bar"

hal:
    <merge key="input.tags" type="string">foo,bar</merge>

xorg.conf:
    Section "InputClass"
            Identifier "foobar quirks"
            MatchTag "foo|foobar"
            Option "Foobar" "on"
    EndSection

Where the xorg.conf section matches against any device with the tag "foo"
or tag "foobar" set.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Dan Nicholson <dbn.lists@gmail.com>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
2010-02-11 19:25:49 +10:00