Home Home > Base-system > Kernel
Sign up | Login

Archive for the ‘Kernel’ Category

ATI/AMD fglrx 8.821 Catalyst 11.2 available for openSUSE 11.2, 11.3, 11.4

February 19th, 2011 by

Updated : April 4th 2011

Preambule : free software

Warning

I would notice everybody which will install these software : you will install proprietary softwares on your computer. Nobody will be able to debug them, nor help you to resolve what can be happen. That must be said !

The free future

The real future is already in place : it’s called radeon (or free-radeon), it’s fully integrated in kernel & xorg. Actually ( for openSUSE 11.4, or openSUSE 11.3 with kernel-stable + X11 obs repo ). Support for many chipset is in real progress even for the 6xxx series.
Give it a try before using the proprietary software, report any bugs you find with it. Only your contributions can help and will make a real differences. Thanks for doing that !

Unofficial but working repository

I offer for those of you that for any reasons can’t use successfully the free-radeon drivers a repository where you will find the latest fglrx/catalyst drivers following the packaging policy made avalaible by AMD.
Thanks to Sebastian Siebert ( check his blog ) to work in coordination with ati/amd and follow the catalyst packaging. His work allow us to have that driver available for openSUSE.

The quick how-to

Adding the repository

For openSUSE Factory
zypper ar -c -f -n "ATI/AMD fglrx non-official" http://linux.ioda.net/mirror/ati/openSUSE_Factory/ "ATI/AMD FGLRX"
For openSUSE 11.4
zypper ar -c -f -n "ATI/AMD fglrx non-official" http://linux.ioda.net/mirror/ati/openSUSE_11.4/ "ATI/AMD FGLRX"
For openSUSE 11.3
zypper ar -c -f -n "ATI/AMD fglrx non-official" http://linux.ioda.net/mirror/ati/openSUSE_11.3/ "ATI/AMD FGLRX"
For openSUSE 11.2
zypper ar -c -f -n "ATI/AMD fglrx non-official" http://linux.ioda.net/mirror/ati/openSUSE_11.2/ "ATI/AMD FGLRX"

Installing the driver

Nota previous version

Due to change in ati/amd way of life, it’s recommanded to completely remove any version of fglrx previously installed with a zypper rm

I can only recommand to also (as root)

# Remove old conf & stuff
rm -fr /etc/ati
# Remove any old fglrx inside kernel modules
find /lib/modules -type f -iname "fglrx.ko" -exec rm -fv {} \;
New installation

Once the repo has been added, you will certainly have to reboot to get ride off free radeon module. At boot on the grub line add
nomodeset blacklist=radeon 3
Don’t panic you will be land to a console, open it with root account to install fglrx.
Search the software you want for example under openSUSE 11.4

zypper se -s fglrx
Loading repository data...
Reading installed packages...

S | Name                  | Type    | Version | Arch   | Repository
--+-----------------------+---------+---------+--------+-----------
i | fglrx64_xpic_SUSE114  | package | 8.831-1 | x86_64 | ATI/AMD fglrx non-official
  | fglrx64_xpic_SUSE114  | package | 8.821-1 | x86_64 | ATI/AMD fglrx non-official
  | fglrx_xpic_SUSE114    | package | 8.831-1 | i586   | ATI/AMD fglrx non-official
  | fglrx_xpic_SUSE114    | package | 8.821-1 | i586   | ATI/AMD fglrx non-official

Starting with 8.821 (Catalyst 11.2) ATI use now xpic (full explanation)
So use that one. I’ve removed all non xpic drivers the 2 April 2011.

For a 64bits version
zypper in fglrx64_xpic_SUSE114
For a 32bits version
zypper in fglrx_xpic_SUSE114

During the installation process, all the dependencies will be added, which mostly are needed to build the kernel modules. Expect around 200MB to dowload.

Then the installer will build the module for your installed kernel.
And if there’s a kernel update, the script will automagically detect that, and will rebuild the module for the new kernel installed. (So if you find that your workstation is slow on reboot just press the esc key to see the details … )

Preparing xorg to use fglrx

Once the module is build and installed, you should have a file fglrx.conf or 50-fglrx.conf in /etc/modprobe.d

cat /etc/modprobe.d/50-fglrx.conf
blacklist radeon

Next ati recommend to use ati –initial-config but that break the auto-detect stack of xorg. So I recommend changing one line in file /etc/X11/xorg.conf.d/50-device.conf
just change driver line to driver “fglrx”
All the rest of the setup (double screen etc) will be made lately with the ati catalyst control center (command is amdcccle).
For those of you which want to have an xorg.conf file just have a look at aticonfig –help command.

Start X

If you are inside the console we start to use before just run “init 5″ to start xorg, and normally you will find your normal xorg login screen (kdm, gdm, ldm, xdm).
Hit ctrl+alt+f1 to return to the console and type exit or logout or ctrl+d to close it.
then ctrl+alt+f7 to return to the xorg session.

Updates

ati/amd catalyst are release on a month basis, but this vary from 3 weeks to 8 weeks.

  • Catalyst 11.2 – fglx 8.821 : 14 February 2011

References

Sebastian Siebert blog ( German ) with nice howto and problem resolution.
My previous post on the subject

ATI Amd flgrx 8.812 catalyst 11.1 available also for 11.4/factory

February 13th, 2011 by

A quick note for the week-end, I’ve build and uploaded the new fglrx drivers.
The good news, they are also available for 11.4/factory,

Unofficial-but-working repository

For openSUSE 11.4 (factory) NEW !

zypper ar -c -f -n "ATI/AMD fglrx non-official" http://linux.ioda.net/mirror/ati/openSUSE_11.4/ "ATI/AMD FGLRX"

I would like to have feedback about how that works for you, please comment !

Factory specifics troubles

on a fresh auto-configuration factory install : libomp43

Problem: fglrx64_7_6_0_SUSE114-8.812-1.x86_64 requires gcc, but this requirement cannot be provided
  uninstallable providers: gcc-4.5-16.1.i586[openSUSE-11.4-11.4-1.35]
                   gcc-4.5-16.1.x86_64[openSUSE-11.4-11.4-1.35]
 Solution 1: deinstallation of libgomp43-4.3.4_20091019-5.23.x86_64
 Solution 2: do not install fglrx64_7_6_0_SUSE114-8.812-1.x86_64
 Solution 3: break fglrx64_7_6_0_SUSE114 by ignoring some of its dependencies

Choose from above solutions by number or cancel [1/2/3/c] (c): 1
Resolving dependencies...
Resolving package dependencies...

The following NEW packages are going to be installed:
  binutils-gold fglrx64_7_6_0_SUSE114 gcc gcc45 glibc-devel
  kernel-default-devel kernel-desktop-devel kernel-devel kernel-source
  kernel-syms kernel-xen-devel libgomp45 linux-glibc-devel make patch 

The following package is going to be REMOVED:
  libgomp43 

15 new packages to install, 1 to remove.
Overall download size: 127.9 MiB. After the operation, additional 600.9 MiB
will be used.

Normally this bug (in M5/M6) should has been resolved in RC1.

See full details on my previous dedicated post
http://lizards.opensuse.org/?p=4673

Make vmware workstation 7.1.3 running with opensuse 11.4 (kernel 2.6.37)

November 15th, 2010 by

Note about the 2.6.37xx

There’s a solution to make the kernel modules building under openSUSE factory (11.4) and the kernel 2.6.37

Preparation

download the lastest vmware workstation 7.1.3 (the patch is only for this version)
download the patch vmware-7.1.3-2.6.37-rc5.patch
download the script to patch patch-modules_v62-opensuse.sh

Install

Proceed to the normal installation of workstation, if you have older version, it will be replaced
by running under root account

sh VMware-Workstation-Full-7.1.3-324285.x86_64.bundle

Patch

Now we have to apply the needed patch, just run as root

sh patch-modules_v62-opensuse.sh

Here the output result

sh patch-modules_v62-opensuse.sh
(Stripping trailing CRs from patch.)
patching file vmci-only/include/compat_semaphore.h
(Stripping trailing CRs from patch.)
patching file vmmon-only/linux/driver.c
(Stripping trailing CRs from patch.)
patching file vmnet-only/compat_semaphore.h
(Stripping trailing CRs from patch.)
patching file vsock-only/shared/compat_semaphore.h
Stopping VMware services:
   VMware USB Arbitrator                                               done
   VM communication interface socket family                            done
   Virtual machine communication interface                             done
   Virtual machine monitor                                             done
   Blocking file system                                                done
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-root/modules/vmmon-only'
make -C /lib/modules/2.6.37-rc5-12-desktop/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C ../../../linux-2.6.37-rc5-12 O=/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop/. modules
  CC [M]  /tmp/vmware-root/modules/vmmon-only/linux/driver.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/linux/iommu.o
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c: In function ‘IOMMUUnregisterDeviceInt’:
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c:217:17: warning: ignoring return value of ‘device_attach’, declared with attribute warn_unused_result
  CC [M]  /tmp/vmware-root/modules/vmmon-only/linux/hostif.o
/tmp/vmware-root/modules/vmmon-only/linux/hostif.c: In function ‘HostIFReadUptimeWork’:
/tmp/vmware-root/modules/vmmon-only/linux/hostif.c:2004:37: warning: ‘newUpBase’ may be used uninitialized in this function
  CC [M]  /tmp/vmware-root/modules/vmmon-only/linux/driverLog.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/memtrack.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/vmx86.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/cpuid.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/task.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/hashFunc.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/comport.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/common/phystrack.o
  CC [M]  /tmp/vmware-root/modules/vmmon-only/vmcore/moduleloop.o
  LD [M]  /tmp/vmware-root/modules/vmmon-only/vmmon.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/vmware-root/modules/vmmon-only/vmmon.mod.o
  LD [M]  /tmp/vmware-root/modules/vmmon-only/vmmon.ko
make[1]: Leaving directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/vmware-root/modules/vmmon-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/vmware-root/modules/vmmon-only'
cp -f vmmon.ko ./../vmmon.o
make: Leaving directory `/tmp/vmware-root/modules/vmmon-only'
Built vmmon module
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-root/modules/vmnet-only'
make -C /lib/modules/2.6.37-rc5-12-desktop/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C ../../../linux-2.6.37-rc5-12 O=/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop/. modules
  CC [M]  /tmp/vmware-root/modules/vmnet-only/driver.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/hub.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/userif.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/netif.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/bridge.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/filter.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/procfs.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/smac_compat.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/smac.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/vnetEvent.o
  CC [M]  /tmp/vmware-root/modules/vmnet-only/vnetUserListener.o
  LD [M]  /tmp/vmware-root/modules/vmnet-only/vmnet.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/vmware-root/modules/vmnet-only/vmnet.mod.o
  LD [M]  /tmp/vmware-root/modules/vmnet-only/vmnet.ko
make[1]: Leaving directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/vmware-root/modules/vmnet-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/vmware-root/modules/vmnet-only'
cp -f vmnet.ko ./../vmnet.o
make: Leaving directory `/tmp/vmware-root/modules/vmnet-only'
Built vmnet module
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-root/modules/vmblock-only'
make -C /lib/modules/2.6.37-rc5-12-desktop/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C ../../../linux-2.6.37-rc5-12 O=/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop/. modules
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/filesystem.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/dentry.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/stubs.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/dbllnklst.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/file.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/block.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/module.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/super.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/inode.o
  CC [M]  /tmp/vmware-root/modules/vmblock-only/linux/control.o
  LD [M]  /tmp/vmware-root/modules/vmblock-only/vmblock.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/vmware-root/modules/vmblock-only/vmblock.mod.o
  LD [M]  /tmp/vmware-root/modules/vmblock-only/vmblock.ko
make[1]: Leaving directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/vmware-root/modules/vmblock-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/vmware-root/modules/vmblock-only'
cp -f vmblock.ko ./../vmblock.o
make: Leaving directory `/tmp/vmware-root/modules/vmblock-only'
Built vmblock module
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-root/modules/vmci-only'
make -C /lib/modules/2.6.37-rc5-12-desktop/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C ../../../linux-2.6.37-rc5-12 O=/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop/. modules
  CC [M]  /tmp/vmware-root/modules/vmci-only/linux/driver.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/linux/driverLog.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/linux/vmciKernelIf.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciDatagram.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciDriver.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciDs.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciContext.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciHashtable.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciEvent.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciQueuePair.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciGroup.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciResource.o
  CC [M]  /tmp/vmware-root/modules/vmci-only/common/vmciProcess.o
  LD [M]  /tmp/vmware-root/modules/vmci-only/vmci.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/vmware-root/modules/vmci-only/vmci.mod.o
  LD [M]  /tmp/vmware-root/modules/vmci-only/vmci.ko
make[1]: Leaving directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/vmware-root/modules/vmci-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/vmware-root/modules/vmci-only'
cp -f vmci.ko ./../vmci.o
make: Leaving directory `/tmp/vmware-root/modules/vmci-only'
Built vmci module
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-root/modules/vsock-only'
make -C /lib/modules/2.6.37-rc5-12-desktop/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C ../../../linux-2.6.37-rc5-12 O=/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop/. modules
  CC [M]  /tmp/vmware-root/modules/vsock-only/linux/af_vsock.o
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c: In function ‘VSockVmciStreamConnect’:
/tmp/vmware-root/modules/vsock-only/linux/af_vsock.c:3172:4: warning: case value ‘255’ not in enumerated type ‘socket_state’
  CC [M]  /tmp/vmware-root/modules/vsock-only/linux/vsockAddr.o
  CC [M]  /tmp/vmware-root/modules/vsock-only/linux/util.o
  CC [M]  /tmp/vmware-root/modules/vsock-only/linux/stats.o
  CC [M]  /tmp/vmware-root/modules/vsock-only/linux/notify.o
  CC [M]  /tmp/vmware-root/modules/vsock-only/driverLog.o
  LD [M]  /tmp/vmware-root/modules/vsock-only/vsock.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /tmp/vmware-root/modules/vsock-only/vsock.mod.o
  LD [M]  /tmp/vmware-root/modules/vsock-only/vsock.ko
make[1]: Leaving directory `/usr/src/linux-2.6.37-rc5-12-obj/x86_64/desktop'
make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= postbuild
make[1]: Entering directory `/tmp/vmware-root/modules/vsock-only'
make[1]: `postbuild' is up to date.
make[1]: Leaving directory `/tmp/vmware-root/modules/vsock-only'
cp -f vsock.ko ./../vsock.o
make: Leaving directory `/tmp/vmware-root/modules/vsock-only'
Built vsock module
Starting VMware services:
   VMware USB Arbitrator                                               done
   Virtual machine monitor                                             done
   Virtual machine communication interface                             done
   VM communication interface socket family                            done
   Blocking file system                                                done
   Virtual ethernet                                                    done
   Shared Memory Available                                             done

All done, you can now run VMWare WorkStation.
Modules sources backup can be found in the '/usr/lib/vmware/modules/source-workstation7.1.3-2010-12-13-19:07:07-backup' directory

References

vmware community post
vmware community thread

Mark D Bernstein aka InitiaZero for providing the script and patch by email and having ping me about it

Enjoy, and thanks to people having done the crappy job before.

Wacom Bamboo Pen and openSUSE 11.3

September 23rd, 2010 by

It all started when my daughter discovered the Bamboo Pen. Naturally the tablet quickly turned into a must have accessory to her computer. After a bit of Googling I came to the conclusion that making the beast work with Linux should be possible. The prize for the effort would be a very happy young lady.

In order to avoid any potential hassle with shipping etc. we went to the local Best Buy to buy the tablet. As the store had the hardware at the same price as online retailers that decision was easy.

Once I actually had my fingers on the tablet it was time to make it work. Doing a bit more detailed research now, I found various openSUSE forum posts and various other links. Some of these were not quite consistent, others appeared to address only half the solution. Therefore, I decided to cast away most of what I had found and just concentrate on the information found on the Linux Wacom Project. The HOWTO is informative and provides all information needed to get everything working. The HOWTO does not provide the information in the linear fashion I like, when I try to get something new to work. With a bit of hoping back and forth and some pocking around I got the tablet to work.

Now to the linear summary on how to get the tablet working.

  • Install openSUSE 11.3
  • Install the necessary packages to build the code provided by the Wacom project (root access required)
    • kernel-source
    • kernel-syms
    • xorg-x11-server-sdk
    • plus make and standard build infrastructure
  • Get the sources from the Wacom download page (0.8.8 at the time of this writing). This is the kernel driver code. The included X utilities and driver code in this version will not work on openSUSE 11.3 and will not build either, that’s OK.
  • Get the X utils and driver code from the Wacom main page. The link at the time of this writing is near the top of the page and links to version 0.10.8
  • Build the kernel driver
    • Unpack the kernel driver code tar -xjvf linuxwacom-0.8.8-8.tar.bz2
    • cd linuxwacom-0.8.8-8
    • Configure the build ./configure --enable-wacom
    • Build the driver make
  • Copy the newly built driver over the driver supplied by the openSUSE kernel (root access required) cp src/2.6.30/wacom.ko /lib/modules/`uname -r`/kernel/drivers/input/tablet/
    • If you want to make a backup copy of the project provided driver make sure you store the copy outside of the modules tree, i.e. outside of /lib/modules/`uname -r`
  • Remove any updates for the driver rm /lib/modules/`uname -r`/weak-updates/updates/wacom.ko
  • Build the X11 utils and driver
    • Unpack the sources tar -xjvf xf86-input-wacom-0.10.8.tar.bz2
    • cd xf86-input-wacom-0.10.8
    • Configure the build ./configure
    • Build make
    • Install (root access required)make install
  • Create a udev rule (root access required)
    • With your favorite editor open /etc/udev/rules.d/60-wacom.rules
    • Add the following code
      # udev rules for wacom tablets.
      KERNEL!="event[0-9]*", GOTO="wacom_end"
      # Multiple interface support for stylus and touch devices.
      DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus"
      DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch"
      # Convenience links for the common case of a single tablet. We could do just this:
      #ATTRS{idVendor}=="056a", SYMLINK+="input/wacom-$env{WACOM_TYPE}"
      # but for legacy reasons, we keep the input/wacom link as the generic stylus device.
      ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom"
      ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}=="touch", SYMLINK+="input/wacom-touch"
      # Check and repossess the device if a module other than the wacom one
      # is already bound to it.
      ATTRS{idVendor}=="056a", ACTION=="add", RUN+="check_driver wacom $devpath $env{ID_BUS}"
      LABEL="wacom_end"
  • Regenerate the module dependencies depmod -e

There you go, now you can connect the tablet, fire up GIMP and be creative.

Another openSUSE kernel git repo

September 14th, 2010 by

The mirror of the openSUSE kernel-source repository has been around for several months already, now there is something new: A repository that is actually usable :-) . The current kernel-source repository is a series of patches managed in git, which has some upsides, like the ability to easily cherry-pick a patch and port it to a different branch or send it upstream. But it is quite painful if you want to work with the code itself and not with patch files. A task as simple as determining if drivers/…/foo.c in openSUSE-11.3 has or does not have a certain change requires checking out the branch and running the sequence-patch script to be able to look at the file. If you need to know when was the file changed, you have to run ‘quilt patches <file>’ to find out what patches touched the file and then ask git about the history of these patches. Neither convenient nor efficient. That’s why we have a second repository, that contains the mainline tree with all the suse patches applied. It’s located at http://gitorious.org/opensuse/kernel, the clone url is git://gitorious.org/opensuse/kernel.git. If you already have a clone of the mainline tree, then you can download just the differences with

git remote add suse git://gitorious.org/opensuse/kernel.git
git remote update suse
git checkout suse/master

The above task is then solved by opening the required file in an editor or typing ‘git show branch:file’. And you don’t even need to clone the tree to quickly check something in the source, just use the web viewer. Also, bisecting is much easier, because you avoid the sequence-patch step now. There are some gotchas though:

  • Not every commit to the kernel-source repository results in a change in the kernel repository. For instance updating config files in the kernel-source repository results in a commit that has no text changes. The gitorious viewer is confused by this and tells you that you are viewing the initial commit. In a local clone, you can exclude such commits with ‘git log .’ (note the dot).
  • When the patch series does not apply, there isn’t much to show in the kernel repository. In such case, the commit only adds a ‘BROKEN’ file to the toplevel directory and uses the tree from the previous commit. When using a bisect script, you can skip such commits with e.g. ‘test -e BROKEN && exit 125′.
  • When patches such as xen are temporarily disabled while updating to newer upstream versions and later enabled, it generates huge diffs back and forth. That’s usually not a problem unless you are bisecting something xen-related.

Anyway, I’m sure this will be useful for anyone who needs to debug something in the openSUSE kernel.

Local caching for CIFS network file system – followup

August 5th, 2010 by

Here’s a follow-up to my previous post on Hackweek V: Local caching for CIFS network file system

Since the previous post, I worked on improving the patches that add local caching, fixed a few bugs, addressed review comments from the community and re-posted the patches. I also gave a talk about it at the SUSE Labs Conference 2010 took place at Prague. The slides can be found here: FS-Cache aware CIFS.

This patchset was merged in the upstream Linux kernel yesterday (Yay!) which means this feature would be available starting from kernel version 2.6.35-rc1.

The primary aim of caching data on the client side is to reduce the network calls to the CIFS Server whenever possible, thereby reducing the server load as well the network load. This will indirectly improve the performance and the scalability of the CIFS Server and will improve the number of clients per Server ratio. This feature could be useful in a number of scenarios:

– Render farms in Entertainment industry – used to distribute textures to individual rendering units
– Read only multimedia workloads
– Accelerate distributed web-servers
– Web server cluster nodes serve content from the cache
– /usr distributed by a network file system – to avoid spamming Servers when there is a power outage
– Caching Server with SSDs reexporting netfs data
– where a persistent cache remains across reboots is useful

However, be warned that local caching may not suitable for all workloads and a few workloads could suffer a slight performance hit (for e.g. read-once type workloads). So, you need to careful consider your workload/scenario before you start using local disk caching.

When I reposted this patchset, I got asked whether I have done any benchmarking and could share the performance numbers. Here are the results from a 100Mb/s network:

Environment
————

I’m using my T60p laptop as the CIFS server (running Samba) and one of my test machines as CIFS client, connected over an ethernet of reported speed 1000 Mb/s. ethtool was used to throttle the speed to 100 Mb/s. The TCP bandwidth as seen by a pair of netcats between the client and the server is about 89.555 Mb/s.

Client has a 2.8 GHz Pentium D CPU with 2GB RAM
Server has a 2.33GHz Core2 CPU (T7600) with 2GB RAM

Test
—–
The benchmark involves pulling a 200 MB file over CIFS to the client using cat to /dev/zero under `time’. The wall clock time reported was recorded.

First, the test was run on the server twice and the second result was recorded (noted as Server below i.e. time taken by the Server when file is loaded on the RAM).
Secondly, the client was rebooted and the test was run with caching disabled (noted as None below).
Next, the client was rebooted, the cache contents (if any) were erased with mkfs.ext3 and test was run again with cachefilesd running (noted as COLD)
Next the client was rebooted, tests were run with caching enabled this time with a populated disk cache (noted as HOT).
Finally, the test was run again without unmounting or rebooting to ensure pagecache remains valid (noted as PGCACHE).

The benchmark was repeated twice:

Cache (state) Run #1 Run#2
============= ======= =======
Server 0.104 s 0.107 s
None 26.042 s 26.576 s
COLD 26.703 s 26.787 s
HOT 5.115 s 5.147 s
PGCACHE 0.091 s 0.092 s

As it can be seen when the disk cache is hot, the performance is roughly 5X times than reading over the network. And, it has to be noted that the Scalability improvement due to reduced network traffic cannot be seen as the test involves only a single client and the Server. The read performance with more number of clients would be more interesting as the cache can positively impact the scalability.

ATI HD57xxx fglrx drivers under 11.3 & 11.4

July 15th, 2010 by

Unofficial-but-working repository

Adding the repository

For openSUSE 11.4

zypper ar -c -f -n "ATI/AMD fglrx non-official" http://linux.ioda.net/mirror/ati/openSUSE_11.4/ "ATI/AMD FGLRX"

For openSUSE 11.3

zypper ar -c -f -n "ATI/AMD fglrx non-official" http://linux.ioda.net/mirror/ati/openSUSE_11.3/ "ATI/AMD FGLRX"

For openSUSE 11.2

zypper ar -c -f -n "ATI/AMD fglrx non-official" http://linux.ioda.net/mirror/ati/openSUSE_11.2/ "ATI/AMD FGLRX"

Searching the version you need

zypper se -s fglrx
+-----------------------+--------+---------+--------------+---------------------------
| fglrx64_7_5_0_SUSE113 | pakiet | 8.812-1 | x86_64       | ATI/AMD fglrx non-official
| fglrx64_7_5_0_SUSE113 | pakiet | 8.801-1 | x86_64       | ATI/AMD fglrx non-official
| fglrx64_7_5_0_SUSE113 | pakiet | 8.783-1 | x86_64       | ATI/AMD fglrx non-official
| fglrx64_7_5_0_SUSE113 | pakiet | 8.771-1 | x86_64       | ATI/AMD fglrx non-official
| fglrx64_7_5_0_SUSE113 | pakiet | 8.762-1 | x86_64       | ATI/AMD fglrx non-official
| fglrx_7_5_0_SUSE113   | pakiet | 8.812-1 | i586         | ATI/AMD fglrx non-official
| fglrx_7_5_0_SUSE113   | pakiet | 8.801-1 | i386         | ATI/AMD fglrx non-official
| fglrx_7_5_0_SUSE113   | pakiet | 8.783-1 | i386         | ATI/AMD fglrx non-official
| fglrx_7_5_0_SUSE113   | pakiet | 8.771-1 | i386         | ATI/AMD fglrx non-official
| fglrx_7_5_0_SUSE113   | pakiet | 8.762-1 | i386         | ATI/AMD fglrx non-official

There’s several version, as I would offer a way to use an older if new break everything :-)

Launch the installation (always as root under a console, and better to be in init 3 mode)
For 11.3 64bits

zypper in fglrx64_7_5_0_SUSE113

For 11.3 32bits

zypper in fglrx7_5_0_SUSE113

etc .. I believe you pick the trick !
At the end of the installation, you can just reboot, or init 3 && init 5 .

Actual version Catalyst 11.1 / 8.812 Published January 26 by ATI/AMD

Previous version Catalyst 10.12 / 8.801 Published December 13 by ATI/AMD (Not available for factory/11.4)

If you already have a fglrx rpm installed, remove the previous version, otherwise catalyst center will give you wrong version information in info panel.

Update news January 26th

Catalyst Release 11.11

Sebastian Siebert blog about his script work nicely well
Script and
German Article

Work in progress : fglrx under factory ( 11.4 ) done for 11.1 catalyst version

At least but not at last, my unofficial-but-working repository packages has been updated yesterday. Another tricks for those who are tired of activating their desktop effects at each kde startup : (picked from the opensuse-kde)

Check out the kwin settings in: /home/user/.kde4/share/config/kwinrc
I have solved that problem changing the DisableChecks parameter from 'false' to 'true'. Although seems that this would be a cover instead of a real solution.
-- Hernán Thiers García

Update news October 2th

How to build the 10.9 driver ? Patch needed

I’ve posted here a version how to patch the drivers to get fglrx.ko builded with latest kernel on openSUSE 11.3 http://www.susepaste.org/80021629

Don’t forget to have a look at Siebert blog his script work nicely well here

Non Official repo and build

For those of us who feel adventurous, and trust me you could install my package (no flgrx.ko inside)

Update news August 7

Seems there’s now an ati repo
you can grab it at http://www2.ati.com/suse/11.3

check the wiki page about that SDB:ATI

zypper ar -fc http://www2.ati.com/suse/11.3 ATI

Check and choose the appropriate package according to your kernel.

but you know what : they just segfault !. My rpm 10.7 (8.753) doesn’t.

Update news July 27

ATI/AMD just release their 10.7 version with native support for openSUSE 11.3

So I rewrite this article with the use of them, and remove any ref to the 10.6 version

Hardware & check

After installing my opensuse 11.3 on a computer with ATI radeon HD57xxx, there’s no desktop effects available, no 3D, no acceleration that can be provided with the free opensource radeon. Too bad, but it’s only a question of months to see support for this graphic card.
My advise would be if radeon works (even with some glitches in it) keep it. And help dev’s with bugs reporting.
To check if 3D is there (would return a YES)

glxinfo | grep -i render

Second point : ATI doesn’t provide anymore repository for their binary drivers, so we have to build them on each needed system. When the 11.3 hits the street, the procedure was complex and not so easy, now with their 10.7 ( 8.753 ) version, it’s doable.

Note All of those manipulation are done under console. So try to leave X, do a ctrl+alt+F1. Go to console, and as root run and init 3 to stop running X

Get ready to build

Downloads

Firstly : read the release note, check if your card is supported or not (HD 3870 X2 is not !)
Secondly : read the release note again, you missed something important before. :-)

Building env

Prepare your openSUSE with a minimal building environment :
zypper in kernel-source kernel-syms module-init-tools make gcc libstdc++ libgcc glibc-32bit glibc-devel-32bit fontconfig freetype zlib*

Now we have to add the correct headers (Thx to those who reveal that )
So most of you running the -desktop flavour

zypper in kernel-desktop-devel

or

zypper in kernel-default-devel

or on 32 bits

zypper in kernel-pae-devel

Install / Build rpm

Quick Install

sh ati-driver-installer-10-7-x86.x86_64.run

Or build your own package to manage them with YaST/zypper/rpm
For 32 bits (can also be build if you have a 64 bits install)

sh ati-driver-installer-10-7-x86.x86_64.run --buildpkg SuSE/SUSE113-IA32

For 64 bits

sh ati-driver-installer-10-7-x86.x86_64.run --buildpkg SuSE/SUSE113-AMD64

(more…)

Guest Blog: Rares Aioanei – Kernel Weekly Review with openSUSE Flavor

July 3rd, 2010 by

Hello, and be welcome to the 12th edition of the Weekly Kernel News!

-The first news for this week is Jan Kara’s pull request fot linux-fs (ext2 and ext3 in our case) aimed at -rc4, Frederic Weisbecker posting his pull request for the perf tree and Arnaldo Carvalho de Melo’s pull request for perf/core targetted at 2.6.36 .

-Sticking to the pull requests, we have also Dmitry Torokhov posting input updates for 2.6.35-rc1, Trond Myklebust with NFS client improvements, Tejun Heo with two fixes for the percpu tree and David Miller with networking fixes , quite a few of them, since they accumulated during Linus’ vacation, as the author explains.

-Neil Brown posted a pull request related to md, targetted @ 2.6.35, containing  various bugfixes, Thomas Gleixner posted various fixes for the core, x86, timer, scheduler, genirq and perf trees targetting also 2.6.35, Jens Axboe also has a pull request for  the block/IO subsystem (targetting -rc*) and Steven Rostedt posted a pull request for the tracing/perf/core tree aimed at 2.6.36 .

-Jeffrey Merkey posted an announcement of MDB Merkey’s Kernel Debugger x86_64 2.6.34 06-28-2010,  with the following summary : “http://merkeydebugger.googlecode.com/files/mdb-2.6.34-x86_64-06-28-2010.patch

This is the first full x86_64 version of MDB.  This implementation of MDB also uses the x86_64 and IA32 versions of the GDB disassmbler instead of the older IA32 disassembler from previous version of MDB.  bfd has been integrated into MDB which will support easy porting of MDB to other processor types.  I used the kdb disassembler GDB source base and added all the MDB features and layout (intel style).  This version also supports 8086 disassembly and IA32.  There is a short list of items left on the list and I will update these as I have more time to work on MDB.” Following is a list of fixes and todo’s, go check them out if interested.

-Junio C Hamano announced the release of git 1.7.11, which can be downloaded at http://www.kernel.org/pub/software/scm/git/ , and that is where one can also find RPM packages. The fixes list is too long to be posted here, but you can always check it out via web.

-Jeffrey Merkey comes back with the release of his MDB (see above) dated 29.06.2010,  introducing a few fixes :
“- fixed DS and W commands to output qwords in stack argument dump
- add find_extend_vma and follow_page to exported symbols
- add ds: and es: segment lookups in disassembler
- enable .TM flag to toggle memory read between physical and user space read/write for addresses < PAGE_OFFSET”

-Tony Lindgren asks Linus for the usual pull, in this case pertaining to omap fixes for 2.6.35-rc3, OpenSUSE’s own Greg Kroah Hartman posted a series of patches related to USB, staging and serial for 2.6.35-git, Dave Airlie posted fixes for drm, agp and fb, all part of the drm tree, John W. Linville posted some wireless fixes for 2.6.35 and Wim Van Sebroeck posted a pull request for the watchdog tree that introduces a  documentation fixi (for -rc3).

-Karel Zak announces the release of util-linux-ng v2.18 (stable) which you can download from the usual location : ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v2.18/ .

-Junio C Hamano announced git 1.7.2.rc1 , available at the same URL as above, make sure you check it out or just update your distro.

-The vhost-net tree was updated by a pull request by Michael S. Tsirkin, asking to merge the tree for 2.6.35, while Jeff Garzik updated the libata tree with a few fixes and Paul McKenney updated the rcu tree with a revert commit, while Thomas Gleixner posted a pull request for the sched tree.

-Greg Kroah Hartman started a series of 149 patches as part of the review cycle of 2.6.32.16 : “This is the start of the stable review cycle for the 2.6.32.16 release. There are 149 patches in this series, all will be posted as a response to this one.  If anyone has any issues with these being applied, please let me know.  If anyone is a maintainer of the proper subsystem, and wants to add a Signed-off-by: line to the patch, please respond with it.

Responses should be made by Sat, July 3, 17:00:00 UTC UTC. Anything received after that time might be too late.

The whole patch series can be found in one patch at: kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.32.16-rc1.gz and the diffstat can be found below.” Greg also started posting the same series of patches, this time for 2.6.27.48, 2.6.33.6, 2.6.34.1 .

That’s all, folks! Have a sunny weekend!

Guest Blog: Rares Aioanei – Weekly Kernel Review (openSUSE Flavor)

June 26th, 2010 by

Hi everyone, and welcome to this week’s edition! As usual, new commits, patches and fixes are waiting, so let’s dive in!

-Karel Zak announced the release of util-linux-ng v 2.18-rc2, available at ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/v2.18/ ; a changelog is also available in the announcement.

-Matthieu Desnoyers announced Userspace RCU 0.4.6 with the following (short) announcement text : “I just released userspace rcu 0.4.6, which contains added ARMv7l support. It also includes the new make check target. I skipped 0.4.5 because I updated the README file after the release.”

-Jeffrey Merkey announced Open Cworthy 6-19-2010 x86_64 fixes with the following changes : “Fixed NWSCREEN pointer size mismatch on x86_64

Fixed build problems on x86_64
Fixed Memory Overwrite glibc message on Fedora 13 x86_64
Upgraded memset and memcpy functions for x86_64

Tested on a 4 processor opteron HP Proliant running Fedora Core 13 x86_64 and FC8 ia32″

-Jean Delvare pushed hwmon fixes for Linus, targetting 2.6.35, Jesse Barnes comitted  a fix for the PCI tree (for -rc3), Paul Mundt posted a pull request to Linus regarding sh updates for -rc4 and John W. Linville posted his pull request regarding the wireless tree (22.06.2010), with just one fix. As some of you may already know, Linus is in a vacation, so the number of git pull requests is smaller than usual.

-Matthieu Desnoyers made an announcement pertaining to the release of LTTng 0.217 for 2.6.34, describing the update as follows : “LTTng 0.218 adds a missing irq_desc export in kernel/irq/handle.c, which only affects sparse irq configurations. This omission only appeared in 0.217.”

-Henrik Rydberg announced the release of mtdev 1.0.1, explained as “mtdev – Multitouch Protocol Translation Library (MIT license)

The mtdev library is a kernel input event stream translator, which greatly simplifies multitouch handling in applications. The input events are simply routed through mtdev, which transforms them to a uniform stream of MT slot events. Software finger tracking is performed when needed, making all devices appear as if they had tracking capabilities. For further details and the source git tree, see

http://bitmath.org/code/mtdev/

The bulk of mtdev has been around since 2008, as part of the Multitouch X Driver project (http://bitmath.org/code/multitouch/). By releasing mtdev as a stand-alone package under the free MIT (X11) license, we hope to simplify the adoption of the MT event protocol in applications.”

-Rafael J. Wysocki posted the list of reported regressions from 2.6.34 related to 2.6.35-rc3, as well as a list of reported regressions between 2.6.33 and 2.6.34.

-The H Online published an article titled “Linus resolves to apply a strict policy over merging changes”,  with the following headline : “It would appear that Linus Torvalds has resolved to apply a strict policy of accepting only bug fix changes to the kernel after the merge window has closed. Torvalds has also stuck his oar into the debate over the Android suspend block API and made the situation even more complicated.”
You can read the whole thing here: http://www.h-online.com/open/features/Kernel-Log-Linus-resolves-to-apply-a-strict-policy-over-merging-changes-1026919.html

-Rusty Russell published few virtio fixes targetted at -rc3, Steven Rostedt posted a pull request for Ingo Molnar related to the tracing tree, and that’s about it for this week, a week with shorter news and no rc, nevertheless with some interesting points worth reading.

Have a great weekend! See y’all next week!

Guest Blog: Rares Aioanei – Weekly Kernel Review (openSUSE Flavor)

June 18th, 2010 by

Hello, and welcome! Looks like just after I finished my article, 2.6.35-rc3 was announced, so I will have to make the announcement in this week’s edition. Let’s begin.

-LWN.net’s Jonathan Corbet posted an article titled “Kernel Prepatch 2.6.35-rc3″ , marking the announcement of the 3rd release candidate. Link is here : http://lwn.net/Articles/391864/rss .

-Michal Marek posted kbuild fixes, while Dominik Brodowski posted also some small fixes for PCMCIA (-rc3), David Miller has his usual dose of fixes for networking, Rafael J. Wysocki posted a resume fix for x86 (the pm tree) and Len Brown posted ACPI patches for -rc3.

-Jeffrey Merkey annonced the 11.06.2010 release of the Open Cworthy Linux libraries with the following changelog : “FIXES

Corrected pthread concurrency issues with ncurses and ncursesw.  These libraries are not pthread safe on linux 2.6.33 and later kernels and require mutexes for access to any of the screen refresh() calls or they will corrupt the video display removed vitriolic messages from the code and comments this version supports multiple update panels with pthread safe calls to ncurses libraries.  Supports VT100, VT220, XTerm, and Linux terminals.  Dumb terminal and ANSI still have some issues but these problems are ncurses related.  Sample IFCON program included.

This version was tested on a 4 processor Opteron HP Proliant Server.”

-Here comes, ladies and gentlemen, the offcial announcement of 2.6.35-rc3, made, of course,  by Linus Torvalds : “So I’ve been hardnosed now for a week – perhaps overly so – and hopefully that means that 2.6.35-rc3 will be better than -rc2 was. Not only do we have a number of regressions handled, we don’t have that silly memory corruptor that bit so many people with -rc2 and confused people with its many varied forms of bugs it seemed to take, depending on just what random memory it happened to corrupt.

One effect of being strict is that this is likely the smallest -rc3 we’ve had in a long long time. The diffstat summary line for the week
looks like this:

165 files changed, 1624 insertions(+), 859 deletions(-)
from 159 commits, and even then the biggest single change was due to moving some functions around in iwl-agn.c, rather than a lot of actual changed lines.

So give it a good testing.

Linus”

-Benjamin Herrenschmidt posted a small group of powerpc fixes for 2.6.35, Takashi Iwai has sound fixes for 2.6.35-rc4, Chris Mason has also some btrfs fixes,  Tomi Valkeinen has two fixes for the OMAP framebuffer driver, Paul E. McKenney  posted some RCU-lockdep splat fixes, and John W. Linville announced a series of fixes for the wireless tree : “Here is another passel of of fixes intended for 2.6.35. Included are some build warning fixes, a PCI identifier, a fix for premature IRQs during hostap initialization, a fix for a warning caused by failing to cancel a scan watchdog in iwlwifi, a fix for a null pointer dereference in iwlwifi, and a fix for a race condition in the same driver.  Also included is the MAINTAINERS change for the orphaning of the older Intel wireless drivers.  All but the last few warning fixes have spent some time in linux-next already.”

And…that’s it for this week! Have a sunny and enjoyable weekend!