# USB and kernel 2.6.7, and the USB kernel freezing

## rapsure

So in the 2.6.5 kernel the USB worked just fine.  I used the same configuration in the 2.6.7 kernel, and my it doesn't work.  GRRRRRR, and it makes me angry.    :Mad:  To best see what is going on I am going to include the kernel messages with USB debugging on.  That means there is just a little extra.  

Linux version 2.6.7-gentoo-r6 (root@rapsure) (gcc version 3.3.3 20040412 (Gentoo Linux 3.3.3-r6, ssp-3.3.2-2, pie-8.7.6)) #2 Sat Jun 26 00:29:34 MDT 2004

BIOS-provided physical RAM map:

 BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)

 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)

 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)

 BIOS-e820: 0000000000100000 - 000000001fff0000 (usable)

 BIOS-e820: 000000001fff0000 - 000000001fff8000 (ACPI data)

 BIOS-e820: 000000001fff8000 - 0000000020000000 (ACPI NVS)

 BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)

511MB LOWMEM available.

On node 0 totalpages: 131056

  DMA zone: 4096 pages, LIFO batch:1

  Normal zone: 126960 pages, LIFO batch:16

  HighMem zone: 0 pages, LIFO batch:1

DMI 2.3 present.

ACPI disabled because your bios is from 00                         and too old

You can enable it with acpi=force

Built 1 zonelists

Kernel command line: root=/dev/hda3

Initializing CPU#0

PID hash table entries: 2048 (order 11: 16384 bytes)

Detected 805.845 MHz processor.

Using tsc for high-res timesource

Console: colour VGA+ 80x25

Memory: 514728k/524224k available (3105k kernel code, 8732k reserved, 1059k data, 152k init, 0k highmem)

Checking if this processor honours the WP bit even in supervisor mode... Ok.

Calibrating delay loop... 1589.24 BogoMIPS

Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)

Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)

Mount-cache hash table entries: 512 (order: 0, 4096 bytes)

CPU:     After generic identify, caps: 0183f9ff c1c7f9ff 00000000 00000000

CPU:     After vendor identify, caps: 0183f9ff c1c7f9ff 00000000 00000000

CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)

CPU: L2 Cache: 256K (64 bytes/line)

CPU:     After all inits, caps: 0183f9ff c1c7f9ff 00000000 00000020

Intel machine check architecture supported.

Intel machine check reporting enabled on CPU#0.

CPU: AMD Athlon(tm) Processor stepping 02

Enabling fast FPU save and restore... done.

Checking 'hlt' instruction... OK.

NET: Registered protocol family 16

PCI: PCI BIOS revision 2.10 entry at 0xfdaf1, last bus=1

PCI: Using configuration type 1

mtrr: v2.0 (20020519)

ACPI: Subsystem revision 20040326

ACPI: Interpreter disabled.

Linux Plug and Play Support v0.97 (c) Adam Belay

SCSI subsystem initialized

usbcore: registered new driver usbfs

usbcore: registered new driver hub

PCI: Probing PCI hardware

PCI: Probing PCI hardware (bus 00)

PCI: Using IRQ router AMD756 [1022/740b] at 0000:00:07.3

Machine check exception polling timer started.

apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)

audit: initializing netlink socket (disabled)

audit(1088265945.049:0): initialized

Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

udf: registering filesystem

Initializing Cryptographic API

mice: PS/2 mouse device common for all mice

serio: i8042 AUX port at 0x60,0x64 irq 12

input: PS/2 Logitech Mouse on isa0060/serio1

serio: i8042 KBD port at 0x60,0x64 irq 1

input: AT Translated Set 2 keyboard on isa0060/serio0

lp: driver loaded but no devices found

Linux agpgart interface v0.100 (c) Dave Jones

agpgart: Detected AMD Irongate chipset

agpgart: Maximum main memory to use for agp memory: 439M

agpgart: AGP aperture is 64M @ 0xe8000000

Hangcheck: starting hangcheck timer 0.5.0 (tick is 180 seconds, margin is 60 seconds).

Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled

ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

parport0: PC-style at 0x378 [PCSPP,TRISTATE,EPP]

parport0: Printer, EPSON Stylus COLOR 777

lp0: using parport0 (polling).

Using anticipatory io scheduler

Floppy drive(s): fd0 is 1.44M

FDC 0 is a post-1991 82077

natsemi dp8381x driver, version 1.07+LK1.0.17, Sep 27, 2002

  originally by Donald Becker <becker@scyld.com>

http://www.scyld.com/network/natsemi.html

  2.4.x kernel port by Jeff Garzik, Tjeerd Mulder

AMD756: dev 100b:0020, router pirq : 4 get irq : 10

PCI: Found IRQ 10 for device 0000:00:08.0

PCI: Sharing IRQ 10 with 0000:00:07.4

PCI: Sharing IRQ 10 with 0000:00:0c.0

eth0: NatSemi DP8381[56] at 0xe0836000, 00:02:e3:03:fa:82, IRQ 10.

PPP generic driver version 2.4.2

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

AMD7409: IDE controller at PCI slot 0000:00:07.1

AMD7409: chipset revision 3

AMD7409: not 100% native mode: will probe irqs later

AMD7409: 0000:00:07.1 (rev 03) UDMA66 controller

    ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:DMA

    ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:pio

hda: Maxtor 34098H4, ATA DISK drive

hdb: WDC WD153AA, ATA DISK drive

ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

hdc: TOSHIBA DVD-ROM SD-R1002, ATAPI CD/DVD-ROM drive

ide1 at 0x170-0x177,0x376 on irq 15

hda: max request size: 128KiB

hda: 78156288 sectors (40016 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(66)

 hda: hda1 hda2 hda3

hdb: max request size: 128KiB

hdb: 30064608 sectors (15393 MB) w/2048KiB Cache, CHS=29826/16/63, UDMA(66)

 hdb: hdb1

hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache, DMA

Uniform CD-ROM driver Revision: 3.20

ohci_hcd: 2004 Feb 02 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)

ohci_hcd: block sizes: ed 64 td 64

AMD756: dev 1022:740c, router pirq : 4 get irq : 10

PCI: Found IRQ 10 for device 0000:00:07.4

PCI: Sharing IRQ 10 with 0000:00:08.0

PCI: Sharing IRQ 10 with 0000:00:0c.0

ohci_hcd 0000:00:07.4: Advanced Micro Devices [AMD] AMD-756 [Viper] USB

ohci_hcd 0000:00:07.4: reset, control = 0x600

ohci_hcd 0000:00:07.4: irq 10, pci mem e0838000

ohci_hcd 0000:00:07.4: new USB bus registered, assigned bus number 1

ohci_hcd 0000:00:07.4: AMD756 erratum 4 workaround

ohci_hcd 0000:00:07.4: supports USB remote wakeup

usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1

usb usb1: default language 0x0409

usb usb1: Product: Advanced Micro Devices [AMD] AMD-756 [Viper] USB

usb usb1: Manufacturer: Linux 2.6.7-gentoo-r6 ohci_hcd

usb usb1: SerialNumber: 0000:00:07.4

usb usb1: hotplug

usb usb1: adding 1-0:1.0 (config #1, interface 0)

usb 1-0:1.0: hotplug

hub 1-0:1.0: usb_probe_interface

hub 1-0:1.0: usb_probe_interface - got id

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 4 ports detected

hub 1-0:1.0: standalone hub

hub 1-0:1.0: no power switching (usb 1.0)

hub 1-0:1.0: global over-current protection

hub 1-0:1.0: power on to power good time: 0ms

hub 1-0:1.0: local power source is good

hub 1-0:1.0: no over-current condition exists

ohci_hcd 0000:00:07.4: created debug files

ohci_hcd 0000:00:07.4: OHCI controller state

ohci_hcd 0000:00:07.4: OHCI 1.0, with legacy support registers

ohci_hcd 0000:00:07.4: control 0x683 RWE RWC HCFS=operational CBSR=3

ohci_hcd 0000:00:07.4: cmdstatus 0x00000 SOC=0

ohci_hcd 0000:00:07.4: intrstatus 0x00000040 RHSC

ohci_hcd 0000:00:07.4: intrenable 0x8000000a MIE RD WDH

ohci_hcd 0000:00:07.4: hcca frame #0000

ohci_hcd 0000:00:07.4: roothub.a 00000204 POTPGT=0 NPS NDP=4

ohci_hcd 0000:00:07.4: roothub.b 00000000 PPCM=0000 DR=0000

ohci_hcd 0000:00:07.4: roothub.status 00008000 DRWE

ohci_hcd 0000:00:07.4: roothub.portstatus [0] 0x00010101 CSC PPS CCS

ohci_hcd 0000:00:07.4: roothub.portstatus [1] 0x00000100 PPS

ohci_hcd 0000:00:07.4: roothub.portstatus [2] 0x00000100 PPS

ohci_hcd 0000:00:07.4: roothub.portstatus [3] 0x00000100 PPS

usbcore: registered new driver usblp

drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver

Initializing USB Mass Storage driver...

usbcore: registered new driver usb-storage

USB Mass Storage support registered.

usbcore: registered new driver usbhid

drivers/usb/input/hid-core.c: v2.0:USB HID core driver

usbcore: registered new driver usbserial

drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0

drivers/usb/serial/usb-serial.c: USB Serial support registered for Handspring Visor / Palm OS

drivers/usb/serial/usb-serial.c: USB Serial support registered for Sony Clie 3.5

drivers/usb/serial/usb-serial.c: USB Serial support registered for Sony Clie 5.0

usbcore: registered new driver visor

drivers/usb/serial/visor.c: USB HandSpring Visor / Palm OS driver v2.1

gameport: pci0000:00:0c.1 speed 1242 kHz

i2c /dev entries driver

Advanced Linux Sound Architecture Driver Version 1.0.4 (Mon May 17 14:31:44 2004 UTC).

AMD756: dev 1102:0002, router pirq : 4 get irq : 10

PCI: Found IRQ 10 for device 0000:00:0c.0

PCI: Sharing IRQ 10 with 0000:00:07.4

PCI: Sharing IRQ 10 with 0000:00:08.0

ALSA device list:

  #0: Sound Blaster Live! (rev. :Cool:  at 0xd800, irq 10

NET: Registered protocol family 2

IP: routing cache hash table of 4096 buckets, 32Kbytes

TCP: Hash tables configured (established 32768 bind 65536)

NET: Registered protocol family 1

NET: Registered protocol family 10

IPv6 over IPv4 tunneling driver

NET: Registered protocol family 17

kjournald starting.  Commit interval 5 seconds

EXT3-fs: mounted filesystem with ordered data mode.

VFS: Mounted root (ext3 filesystem) readonly.

Freeing unused kernel memory: 152k freed

ohci_hcd 0000:00:07.4: GetStatus roothub.portstatus [1] = 0x00010101 CSC PPS CCS

hub 1-0:1.0: port 1, status 0101, change 0001, 12 Mb/s

hub 1-0:1.0: debounce: port 1: delay 100ms stable 4 status 0x101

ohci_hcd 0000:00:07.4: GetStatus roothub.portstatus [1] = 0x00100103 PRSC PPS PES CCS

usb 1-1: new full speed USB device using address 2

usb 1-1: new device strings: Mfr=1, Product=2, SerialNumber=0

usb 1-1: default language 0x0409

usb 1-1: Product: eUSB CompactFlash Adapter

usb 1-1: Manufacturer: SCM Microsystems Inc.

usb 1-1: hotplug

usb 1-1: adding 1-1:1.0 (config #1, interface 0)

usb 1-1:1.0: hotplug

usb-storage 1-1:1.0: usb_probe_interface

usb-storage 1-1:1.0: usb_probe_interface - got id

scsi0 : SCSI emulation for USB Mass Storage devices

Adding 999992k swap on /dev/hda2.  Priority:-1 extents:1

EXT3 FS on hda3, internal journal

nvidia: module license 'NVIDIA' taints kernel.

0: nvidia: loading NVIDIA Linux x86 NVIDIA Kernel Module  1.0-5336  Wed Jan 14 18:29:26 PST 2004

AMD756: dev 14f1:1033, router pirq : 1 get irq :  9

PCI: Found IRQ 9 for device 0000:00:0d.0

ttySHCF0 at I/O 0xd600 (irq = 9) is a Conexant HCF controllerless PCI modem

kjournald starting.  Commit interval 5 seconds

EXT3 FS on hdb1, internal journal

EXT3-fs: mounted filesystem with ordered data mode.

eth0: link up.

eth0: Setting full-duplex based on negotiated link capability.

eth0: no IPv6 routers present

agpgart: Found an AGP 1.0 compliant device at 0000:00:00.0.

agpgart: Putting AGP V2 device at 0000:00:00.0 into 2x mode

agpgart: Putting AGP V2 device at 0000:01:05.0 into 2x mode

atkbd.c: Spurious ACK on isa0060/serio0. Some program, like XFree86, might be trying access hardware directly.

atkbd.c: Spurious ACK on isa0060/serio0. Some program, like XFree86, might be trying access hardware directly.

Right after it detects a device on the root hub it locks up.  The USB kernel won't detect any other devices, and the /proc/bus/usb system is also lock up, and not displaying anything.  If any program tries to access anything on the USB system after that it too locks up.  hotplug tries to access the usb system, and it locks up, and so does cupsd.  I don't know what else I can do except find the mistake in the kernel code.  No device for the USB storage was created.

----------

## John-Boy

Rapsure,

I've had almost the same problem as you describe - I'm sure that somebody way more experienced will be along in a moment but here's how I fixed my prob.  Might give you some help.

Like you usb worked fine in 2.6.5 - not so in 2.6.7.  I had a lockup with my memory stick if I left the thing in the usb hub whilst booting as well.  What I did was to grab the latest release of 2.6.7 (rc 6 - which I see that you are using) - install that and reemerge hotplug (I also dropped the 'unload modules' bit out of the kernel at that point I was somewhat desperate, so this probably wasn't needed  :Very Happy:  ).

Usb then started working.  Odd, I'd like to know what exactly caused this myself, the config file remained the same between 2.6.5 and pre 2.6.7 ..

Jon

----------

## rapsure

Jun 26 14:43:35 rapsure ohci_hcd 0000:00:07.4: remote wakeup

Jun 26 14:43:35 rapsure ohci_hcd 0000:00:07.4: GetStatus roothub.portstatus [1]

= 0x00010101 CSC PPS CCS

Jun 26 14:43:35 rapsure hub 1-0:1.0: port 1, status 0101, change 0001, 12 Mb/s

Jun 26 14:43:36 rapsure hub 1-0:1.0: debounce: port 1: delay 100ms stable 4 status 0x101

Jun 26 14:43:36 rapsure ohci_hcd 0000:00:07.4: GetStatus roothub.portstatus [1]

= 0x00100103 PRSC PPS PES CCS

Jun 26 14:43:36 rapsure usb 1-1: new full speed USB device using address 3

Jun 26 14:43:36 rapsure usb 1-1: new device strings: Mfr=1, Product=2, SerialNumber=0

Jun 26 14:43:36 rapsure usb 1-1: default language 0x0409

Jun 26 14:43:36 rapsure usb 1-1: Product: eUSB CompactFlash Adapter

Jun 26 14:43:36 rapsure usb 1-1: Manufacturer: SCM Microsystems Inc.

Jun 26 14:43:36 rapsure usb 1-1: hotplug

Jun 26 14:43:36 rapsure usb 1-1: adding 1-1:1.0 (config #1, interface 0)

Jun 26 14:43:36 rapsure usb 1-1:1.0: hotplug

Jun 26 14:43:36 rapsure usb-storage 1-1:1.0: usb_probe_interface

Jun 26 14:43:36 rapsure usb-storage 1-1:1.0: usb_probe_interface - got id

Jun 26 14:43:36 rapsure usb-storage: USB Mass Storage device detected

Jun 26 14:43:36 rapsure usb-storage: altsetting is 0, id_index is 92

Jun 26 14:43:36 rapsure usb-storage: -- associate_dev

Jun 26 14:43:36 rapsure usb-storage: Transport: Bulk

Jun 26 14:43:36 rapsure usb-storage: Protocol: Transparent SCSI

Jun 26 14:43:36 rapsure usb-storage: Endpoints: In: 0xdc359be8 Out: 0xdc359bd4 Int: 0xdc359bfc (Period 32)

Jun 26 14:43:36 rapsure usb-storage: usb_stor_control_msg: rq=fe rqtype=a1 value=0000 index=00 len=1

Jun 26 14:43:36 rapsure usb-storage: GetMaxLUN command result is 1, data is 0

Jun 26 14:43:36 rapsure usb-storage: *** thread sleeping.

Jun 26 14:43:36 rapsure scsi0 : SCSI emulation for USB Mass Storage devices

Jun 26 14:43:36 rapsure usb-storage: queuecommand called

Jun 26 14:43:36 rapsure usb-storage: *** thread awakened.

Jun 26 14:43:36 rapsure usb-storage: Command INQUIRY (6 bytes)

Jun 26 14:43:36 rapsure usb-storage:  12 00 00 00 24 00

Jun 26 14:43:36 rapsure usb-storage: Bulk Command S 0x43425355 T 0x1 L 36 F 128

Trg 0 LUN 0 CL 6

Jun 26 14:43:36 rapsure usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes

Jun 26 14:43:36 rapsure usb-storage: Status code 0; transferred 31/31

Jun 26 14:43:36 rapsure usb-storage: -- transfer complete

Jun 26 14:43:36 rapsure usb-storage: Bulk command transfer result=0

Jun 26 14:43:36 rapsure usb-storage: usb_stor_bulk_transfer_buf: xfer 36 bytes

Jun 26 14:43:41 rapsure usb-storage: command_abort called

Jun 26 14:43:41 rapsure usb-storage: usb_stor_stop_transport called

Jun 26 14:43:41 rapsure usb-storage: -- cancelling URB

After that the USB kernel froze.  No device file was created.

This is all after the computer is started up, and so I plugged the device in.

On a side not, perhaps related is that if I have anything plugged into the USB ports when the computer is turned on, hotplug freezes, and the computer stops responding.

If I could get some help.

----------

## rapsure

So I reemerged hotplug, and the problem persists.  J0hn boy it must have been removing the option to remove modules that got it to work.  hmm  That would mean that it is a kernel bug as I has presumed.  It doesn't have anything to do with the Gentoo kernel patch sets.  This bug also shows up in the vanilla or Andrew Morton's release that I also tested from kernel.org.  This sucks.

----------

## John-Boy

It's a bit odd, all the stuff for scsi/usb in my kernel is complied right in - modules shouldn't really have had an effect.  I removed it because it hit me that I did make one change between 2.6.5 and 7 with respect to the Kernel.  The modules unload bit, I was playing with options at the time.

Cupsd in my case didn't freeze - so I don't know about a bug as such.  

I'll try a little experiment later today, I'll add the modules bit back in and just see.  What do your Kernel options look like with respect to this ?

Anybody else had any similar probs ?

----------

## rapsure

I have module unloading enabled.  It was also enabled in the 2.6.5 kernel, and everything worked just fine.  I had everything selected in the kernel module options.  I just don't know what is going wrong.  It works until it reaches the 36 byte transfer, and then it times out.  Urb then closes, and the usb ports never respond again until I restart the computer.  I did do a lot of experimenting, and I was able to get my parallel/usb printer to create a device using the usb interface.  I found that kind of odd, so I tested to see if my Palmspring device worked, and it did.  I did find something worse though, and that is if I left my printer plugged into the USB port when I restarted the computer, or turned in on, and I left it plugged in that when the computer loaded the hotplug scripts about 20 seconds later the kernel would lock the entire computer.  Two options left after that were to press the power button for three seconds, or press the reset button.  The keyboard had stopped responding, and so had everthing else.   :Confused: 

----------

## marduk

Please follow up bug #54113 which, I think, describes the same problem.

https://bugs.gentoo.org/show_bug.cgi?id=54413

----------

## rapsure

I went and checked the bug report, but I think they are having a similiar problem, but it isn't in hotplug.  It is happening, because there is a bug in the kernel.  I think it may have something to do with memory being over written.  Hotplug only stops responding, because the USB kernel isn't responding.  It has nothing to do with the gentoo-dev-sources.  I tested the kernel.org 2.6.7, along with the latest snapshot of the kernel which is 2.6.7-bk9.  The bug still hadn't been resolved, so I have posted a bug at http://bugme.osdl.org  Hopefully this bug will be resolved for the next release of the 2.6 kernel, because a lot of people are having there USB stop working after the upgrade to 2.6.7.  I am open to more suggestions though.

----------

## marduk

 *rapsure wrote:*   

> I went and checked the bug report, but I think they are having a similiar problem, but it isn't in hotplug.  It is happening, because there is a bug in the kernel.  I think it may have something to do with memory being over written.  Hotplug only stops responding, because the USB kernel isn't responding.  It has nothing to do with the gentoo-dev-sources.  I tested the kernel.org 2.6.7, along with the latest snapshot of the kernel which is 2.6.7-bk9.  The bug still hadn't been resolved, so I have posted a bug at http://bugme.osdl.org  Hopefully this bug will be resolved for the next release of the 2.6 kernel, because a lot of people are having there USB stop working after the upgrade to 2.6.7.  I am open to more suggestions though.

 

Read further down.  The bug report states that the freeze occurs when loading the USB module, not hotplug.  It just shows up in hotplug because hotplug loads the USB module.  It also states that it's not specific to gentoo-dev-sources.  It is a kernel 2.6.7 bug report, not a hotplug one (which is why it was assigned to the kernel group).

It also states that when I put the modules in modules.autoload, it doesn't freeze.

----------

## rapsure

The whole thing went just along the lines of discover that I went through.  However I haven't done the autoload thing.  It is the same case for me, and that is that the 2.6.5 kernel is much more stable, and doesn't have weird issues with it.  So I am going to keep the skeletons of the 2.6.7 ( five different compiles) around so I can use it for testing.  In the bug report it was quit informative on how they got it to work.  Perhaps I should try the autoload.d, and add the USB system to that.  maybe it would resolve the memory being over written problem.    :Idea: 

----------

## marduk

 *rapsure wrote:*   

> The whole thing went just along the lines of discover that I went through.  However I haven't done the autoload thing.  It is the same case for me, and that is that the 2.6.5 kernel is much more stable, and doesn't have weird issues with it.  So I am going to keep the skeletons of the 2.6.7 ( five different compiles) around so I can use it for testing.  In the bug report it was quit informative on how they got it to work.  Perhaps I should try the autoload.d, and add the USB system to that.  maybe it would resolve the memory being over written problem.   

 

modules.autoload worked for me, but I still had problems with alsa (or esdound or something sound-related) and just generally things didn't "feel" right.  When booting the kernel spits out extraneous newlines that didn't appear in earlier releases. I dropped back to 2.6.5.

----------

## rapsure

How often do we know when a newer kernel is worse than the last.  Maybe some Microsoft dude broke in, and inserted some code.  We will probably have to wait until the next release of the linux kernel which is 2.6.8, and then the bug may be fixed.  Or two more months for the gentoo-dev-sources to put out a new stable version.  I like my 2.6.5 kernel configuration, because it just works, and works, and never stops working it seems.  :Very Happy: 

----------

