* Re: snd_pcm_drain() always fails
From: Hynek Hanke,,, @ 2005-08-01 18:04 UTC (permalink / raw)
To: Jaroslav Kysela; +Cc: alsa-devel
In-Reply-To: <Pine.LNX.4.61.0508011953060.12402@tm8103.perex-int.cz>
> > Or, what is the correct way to wait until the rest of the sound is
> > played when I'm using the poll() approach?
> Set the blocking mode before drain() is called (and return the mode back
> after it, if you want).
Not possible. I'm waiting for other events (not comming from ALSA) too in the
poll().
> The better way might be setting sw_params to wakeup app after all frames are
> played and use the standard poll() call to wait in app.
How do I do this or where can I read about it? Still, I need to receive other events
too while waiting for the sound to stop playing.
Thank you,
Hynek Hanke
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
^ permalink raw reply
* Re: cpufreq on Toshiba Portege 4000?
From: Dave Jones @ 2005-08-01 18:06 UTC (permalink / raw)
To: Andrey Borzenkov; +Cc: linux-kernel
In-Reply-To: <200508012156.18271.arvidjaar@mail.ru>
On Mon, Aug 01, 2005 at 09:56:17PM +0400, Andrey Borzenkov wrote:
> Toshiba documentation claims it supports speedstep technology. It has Ali
> chipset and PIII CPU:
>
> {pts/1}% lspci
> 00:00.0 Host bridge: ALi Corporation M1644/M1644T Northbridge+Trident (rev 01)
> 00:01.0 PCI bridge: ALi Corporation PCI to AGP Controller
> 00:02.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)
> 00:04.0 IDE interface: ALi Corporation M5229 IDE (rev c3)
> ...
>
> Any cnahce to use cpufreq (or compatible) technique here?
Nope, The speedstep-smi driver only works on Intel chipsets.
Dave
^ permalink raw reply
* Re: 2 errors in 2.6.12
From: CIJOML @ 2005-08-01 18:03 UTC (permalink / raw)
To: mkrufky, Linux and Kernel Video; +Cc: linux-kernel
In-Reply-To: <42ED1016.1000804@m1k.net>
On Sun, 31 Jul 2005, Michael Krufky wrote:
> Andrew Morton wrote:
>
> >Michal Semler <cijoml@volny.cz> wrote:
> >
> >
> >> This is what I gets into dmesg:
> >>
> >> Linux video capture interface: v1.00
> >> bttv: driver version 0.9.15 loaded
> >> bttv: using 8 buffers with 2080k (520 pages) each for capture
> >> bttv: Bt8xx card found (0).
> >> ACPI: PCI Interrupt 0000:01:0b.0[A] -> Link [LNKH] -> GSI 9 (level, low) ->
> >> IRQ 9
> >> bttv0: Bt878 (rev 17) at 0000:01:0b.0, irq: 9, latency: 32, mmio: 0xb69fe000
> >> bttv0: using: ProVideo PV951 [card=42,insmod option]
> >> bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
> >> bttv0: using tuner=1
> >> bttv0: i2c: checking for TDA9875 @ 0xb0... not found
> >> bttv0: i2c: checking for TDA7432 @ 0x8a... not found
> >> tvaudio: TV audio decoder + audio/video mux driver
> >> tvaudio: known chips:
> >> tda9840,tda9873h,tda9874h/a,tda9850,tda9855,tea6300,tea6320,tea6420,tda8425,pic16c54
> >> (PV951),ta8874z
> >> tvaudio: found pic16c54 (PV951) @ 0x96
> >> bttv0: i2c: checking for TDA9887 @ 0x86... not found
> >> tuner: Unknown parameter `type'
> >> bttv0: registered device video0
> >> bttv0: registered device vbi0
> >> bttv0: registered device radio0
> >> bttv0: PLL: 28636363 => 35468950 .. ok
> >> ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
> >> PCI: setting IRQ 10 as level-triggered
> >> ACPI: PCI Interrupt 0000:01:0c.0[A] -> Link [LNKB] -> GSI 10 (level, low) ->
> >> IRQ 10
> >>
> >>
> >
> >(cc the v4l list)
> >
> >The above is with 2.6.13-rc4. 2.6.11 was OK.
> >
> >
> Michael-
>
> Please remove the insmod options:
>
> bttv0: using: ProVideo PV951 [card=42,insmod option]
>
> ...and show us dmesg output with autodetection.
>
> Also, please try CVS and tell us if you still have the problem... Instructions at:
>
> http://linuxtv.org/v4lwiki/index.php/How_to_build_from_CVS
>
Linux video capture interface: v1.00
bttv: driver version 0.9.15 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
ACPI: PCI Interrupt 0000:01:0b.0[A] -> Link [LNKH] -> GSI 9 (level, low)
-> IRQ 9
bttv0: Bt878 (rev 17) at 0000:01:0b.0, irq: 9, latency: 32, mmio:
0xb69fe000
bttv0: using: *** UNKNOWN/GENERIC *** [card=0,autodetected]
bttv0: gpio: en=00000000, out=00000000 in=00ffffff [init]
tveeprom(bttv internal): Huh, no eeprom present (err=-121)?
bttv0: using tuner=-1
bttv0: i2c: checking for MSP34xx @ 0x80... not found
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: i2c: checking for TDA9887 @ 0x86... not found
bttv0: registered device video0
bttv0: registered device vbi0
Same with CVS - kernel 2.6.11 with my options works for me like hell.
Card is really PV951 - it was written on box also :)
Michal
> --
> Michael Krufky
>
> --
> video4linux-list mailing list
> Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
> https://www.redhat.com/mailman/listinfo/video4linux-list
>
^ permalink raw reply
* [Qemu-devel] Error installing bootloader in guest
From: Adnan Khaleel @ 2005-08-01 17:35 UTC (permalink / raw)
To: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 492 bytes --]
Hi there,
I'm using qemu-0.7.1 to install SUSE Linux enterprise v9 and everything proceeds smoothly until the boot loader as to be installed as which point I get the SUSE installer reporting a "segmentation fault while installing GRUB".
The hard disk image is in raw format I created using qemu-img and is 3G in size.
I've attached a screen capture
Any ideas what might be causing this? I've tried it using 2 different harddisk images but I get the same problem.
Thanks
Adnan
[-- Attachment #2: qemu_error.gif --]
[-- Type: image/gif, Size: 25467 bytes --]
^ permalink raw reply
* Re: EMC Clariion ghost devices
From: Joel Becker @ 2005-08-01 18:02 UTC (permalink / raw)
To: device-mapper development; +Cc: christophe varoqui
In-Reply-To: <20050731220154.GC15655@marowsky-bree.de>
On Mon, Aug 01, 2005 at 12:01:54AM +0200, Lars Marowsky-Bree wrote:
> That should not happen(tm). Where does it hang according to sysrq-t?
>
> (kpartx supposedly is run against the dm-multipath table and not against
> sdap, so it should already benefit from the multipath protection...)
>
> "sg_inq -P /dev/sdap" might also be worth a try, what does it report for
> the various paths?
This reports a LUN_Z, which is what I expected after I
was explained a LUN_Z is the same as a ghost report.
I get this in dmesg at multipath(8):
device-mapper: dm-multipath: 66:144: Error trying to initialize PG, failing path
device-mapper: dm-multipath: Failing path 66:144
66:144 is, indeed, /dev/sdap. Kpartx is again hanging on:
# ps -ef | grep kpartx
root 26698 25674 0 10:53 ? 00:00:00 /sbin/kpartx -m -a /dev/dm-16
# ls -l /dev/disk/by-name | grep dm-16
/dev/disk/by-name/3500601609020ea1a500601609020ea1a -> ../../dm-16
# dmsetup deps 3500601609020ea1a500601609020ea1a
1 dependencies : (66, 144)
# echo t > /proc/sysrq-trigger
kpartx D 00000100bea0f680 0 26698 25674 25755 (NOTLB)
00000100c1511bc8 0000000000000006 00000100c05e00a0 000001d09566ce68
0000000000000246 0000010081b54580 0000007300000001 000001007b608b10
0000000100000001 0000010081b55660
Call Trace:<ffffffff802859a4>{generic_unplug_device+36} <ffffffff8013953f>{io_schedule+63}
<ffffffff80163b39>{__lock_page_wq+233} <ffffffff8013ce40>{autoremove_wake_function+0}
<ffffffff8016c518>{page_cache_readahead+328} <ffffffff8013ce40>{autoremove_wake_function+0}
<ffffffff8016518c>{do_generic_mapping_read+876} <ffffffff801637a0>{file_read_actor+0}
<ffffffff80166024>{__generic_file_aio_read+420} <ffffffff801661eb>{generic_file_read+187}
<ffffffff8019592e>{do_open+318} <ffffffff8019712a>{cp_new_stat+234}
<ffffffff8013ce40>{autoremove_wake_function+0} <ffffffff8018d184>{vfs_read+244}
<ffffffff8018d3dd>{sys_read+157} <ffffffff80110794>{system_call+124}
--
"Can any of you seriously say the Bill of Rights could get through
Congress today? It wouldn't even get out of committee."
- F. Lee Bailey
Joel Becker
Senior Member of Technical Staff
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
^ permalink raw reply
* RE: [PATCH 2.6.12.1 1/12] S2io: Code cleanup
From: Ravinandan Arakali @ 2005-08-01 18:01 UTC (permalink / raw)
To: 'Jeff Garzik', raghavendra.koushik
Cc: netdev, leonid.grossman, rapuru.sriram
In-Reply-To: <42EC5D96.3050304@pobox.com>
Jeff,
We'll re-verify the patches against latest kernel and resend.
Since the remaining 12 patches are layered on top of the first one,
it will be tough to re-order the patches at this stage. Also, we'll
need to rerun the QA cycle to ensure that nothing got broken in
the process of patch reordering.
We will certainly keep this in mind for our next submission.
Thanks,
Ravi
-----Original Message-----
From: Jeff Garzik [mailto:jgarzik@pobox.com]
Sent: Saturday, July 30, 2005 10:12 PM
To: raghavendra.koushik@neterion.com
Cc: netdev@oss.sgi.com; ravinandan.arakali@neterion.com;
leonid.grossman@neterion.com; rapuru.sriram@neterion.com
Subject: Re: [PATCH 2.6.12.1 1/12] S2io: Code cleanup
patch doesn't seem to apply :(
Can you please resend the entire series, taking into account the
comments WRT patch #5?
Also, I was unable to include your fixes in my 'fixes' branch, whose
speed to upstream kernel is accelerated, because patch #1 was not bug fixes.
If you want your bug fixes to go upstream as rapidly as possible, make
sure they are ordered before the code cleanups and new features. This
allows me to send the fixes upstream immediately, while allowing further
review and testing of the cleanup/feature patches.
Jeff
^ permalink raw reply
* Re: [Qemu-devel] Possible bug?
From: Paul Brook @ 2005-08-01 17:58 UTC (permalink / raw)
To: qemu-devel; +Cc: J.N. Herder
In-Reply-To: <42EE5B76.5000702@cs.vu.nl>
On Monday 01 August 2005 18:27, J.N. Herder wrote:
> Hi all,
>
> I'm having some troubles with QEMU's hard disk images and may have bumped
> into a bug. I'm trying to import data into my emulated MINIX, but somehow
> it is truncated.
>
> I successfully created a qemu-img called hda.img of 512 MB and installed
> the latest version from MINIX on it. Trying to import files by using the
> file as hdb image and reading from /dev/hdb in the emulated MINIX works
> perfectly fine for small files. For an import file above 1.5 MB the
> following weirdiness happens:
The size of the image will be truncated to a whole number of cylinders. You
should add padding so the image is a multiple of the cylinder size (depends
on drive geometry, but usually 16*63*512 bytes)
Paul
^ permalink raw reply
* [PATCH] NFS - Missing unlock_kernel() in lookup path
From: Steve Dickson @ 2005-08-01 18:00 UTC (permalink / raw)
To: Trond Myklebust; +Cc: nfs
[-- Attachment #1: Type: text/plain, Size: 234 bytes --]
Hey Trond,
I was backport some patches and noticed that nfs_atomic_lookup()
seems to be missing an unlock_kernel()... I would think that
nfs_atomic_lookup() should unlock_kernel() when nfs_revalidate_inode()
fails... true?
steved.
[-- Attachment #2: linux-2.6.12.3-nfs-missing-lock.patch --]
[-- Type: text/x-patch, Size: 488 bytes --]
Added missing unlock_kernel() to NFS lookup patch.
Signed-off-by: Steve Dickson <steved@redhat.com>
-----------------------------------------------
--- linux-2.6.12.3/fs/nfs/dir.c.orig 2005-07-15 17:18:57.000000000 -0400
+++ linux-2.6.12.3/fs/nfs/dir.c 2005-08-01 13:46:19.000000000 -0400
@@ -835,6 +835,7 @@ static struct dentry *nfs_atomic_lookup(
error = nfs_revalidate_inode(NFS_SERVER(dir), dir);
if (error < 0) {
res = ERR_PTR(error);
+ unlock_kernel();
goto out;
}
^ permalink raw reply
* ECC Support in Linux
From: Roger Heflin @ 2005-08-01 18:03 UTC (permalink / raw)
To: 'linux-kernel'
In-Reply-To: <1122770777.5473.1.camel@mindpipe>
I have had a fair amount of trouble with the limited support
for ecc reporting on higher end dual and quad cpu servers as
the reporting is pretty weak.
On the opterons I can tell which cpu gets errors, but mcelog
does not isolate things down to the dimm level properly, is
there a way to do this sort of thing? I am talking about most
of the whitebox type motherboards.
On the newer Intels I have not found any useable ECC support
is there any in the kernels?
I can test a variety of hardware if someone needs it, and can
probably even come up with some test memory that will generate ecc
errors.
Roger
^ permalink raw reply
* endianness of Linux kernel RAID
From: Gregory Seidman @ 2005-08-01 17:42 UTC (permalink / raw)
To: LinuxPPC dev list
It turns out that if one uses the kernel (2.4.x-2.6.x) RAID support (RAID5,
anyway, since that's all I've tested), the RAID'd disks cannot be moved to
another system with a different endianness. I don't know how hard that
would be to fix, but it did mean that when my ancient Mac clone I was using
as a server died I couldn't bring the RAID over to my spare x86 Linux box;
I had to dedicate other hardware (my dual G4 that I had been happily using
with OS X) to the task instead.
Unfortunately, I haven't gotten into kernel development and, therefore, do
not have the necessary expertise to fix it. Is anyone here interested in
this issue?
--Greg
^ permalink raw reply
* Re: snd_pcm_drain() always fails
From: Jaroslav Kysela @ 2005-08-01 17:57 UTC (permalink / raw)
To: Hynek Hanke; +Cc: alsa-devel
In-Reply-To: <20050801172719.GB10144@brailcom.cz>
On Mon, 1 Aug 2005, Hynek Hanke wrote:
>
> Hi,
>
> I'm still having problems programming ALSA backend for my app. I open the
> device, I try to write as many frames as possible, I poll() for events (and
> check for XRUNs and SUSPENDs, they don't happen). When I get notification that
> ALSA is ready for more frames, I send more (typically 32 or 64). After all
> frames are sent, I call snd_pcm_drain() ... and want to wait in poll() until
> ALSA gets out of SND_PCM_STATE_DRAINING.
>
> But snd_pcm_drain() always fails with ``Resource temporarily unavailable''
> error. The state after snd_pcm_drain() fails is still RUNNING. Why is this?
> What can I do about it?
Nothing. If drain() is supposed to wait until all data are played and
you're using the non-blocking mode, then it's definitely an error (thus
-EAGAIN is returned - and it means from the driver perspective - I must
wait and the application does not want this from me).
> Or, what is the correct way to wait until the rest of the sound is
> played when I'm using the poll() approach?
Set the blocking mode before drain() is called (and return the mode back
after it, if you want). The better way might be setting sw_params to
wakeup app after all frames are played and use the standard poll() call to
wait in app.
Jaroslav
-----
Jaroslav Kysela <perex@suse.cz>
Linux Kernel Sound Maintainer
ALSA Project, SUSE Labs
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
^ permalink raw reply
* cpufreq on Toshiba Portege 4000?
From: Andrey Borzenkov @ 2005-08-01 17:56 UTC (permalink / raw)
To: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 969 bytes --]
Toshiba documentation claims it supports speedstep technology. It has Ali
chipset and PIII CPU:
{pts/1}% lspci
00:00.0 Host bridge: ALi Corporation M1644/M1644T Northbridge+Trident (rev 01)
00:01.0 PCI bridge: ALi Corporation PCI to AGP Controller
00:02.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03)
00:04.0 IDE interface: ALi Corporation M5229 IDE (rev c3)
00:06.0 Multimedia audio controller: ALi Corporation M5451 PCI AC-Link
Controller Audio Device (rev 01)
00:07.0 ISA bridge: ALi Corporation M1533 PCI to ISA Bridge [Aladdin IV]
00:08.0 Bridge: ALi Corporation M7101 Power Management Controller [PMU]
...
{pts/1}% cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 8
model name : Pentium III (Coppermine)
stepping : 10
cpu MHz : 747.738
cache size : 256 KB
...
Any cnahce to use cpufreq (or compatible) technique here?
TIA
-andrey
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Re: [linux-lvm] vgexport/vgimport fails
From: Richard Ray @ 2005-08-01 17:53 UTC (permalink / raw)
To: LVM general discussion and development
In-Reply-To: <20050801133852.GI4985@agk.surrey.redhat.com>
On Mon, 1 Aug 2005, Alasdair G Kergon wrote:
> Run vgscan -vvvv and look for the reason it
> gives for ignoring the disks.
..
#device/dev-io.c:250 /dev/hdg: size is 490234752 sectors
#device/dev-io.c:134 /dev/hdg: block size is 4096 bytes
#filters/filter.c:109 /dev/hdg: Skipping: Partition table
signature found
#device/dev-io.c:408 Closed /dev/hdg
..
#device/dev-io.c:377 Opened /dev/hdh RO
#device/dev-io.c:250 /dev/hdh: size is 488397168 sectors
#device/dev-io.c:134 /dev/hdh: block size is 4096 bytes
#filters/filter.c:109 /dev/hdh: Skipping: Partition table
signature found
#device/dev-io.c:408 Closed /dev/hdh
I used these two drives seperately prior to adding them to a volume group
When I pvcreated them I used the whole disk not partitions
If I fdisk /dev/hdg I see there is still a partition but in Fedora 2
vgscan -v shows
Finding all volume groups
Finding volume group "vg00"
--- Volume group ---
VG Name vg00
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 255
Cur LV 1
Open LV 1
Max PV 255
Cur PV 2
Act PV 2
VG Size 466.64 GB
PE Size 4.00 MB
Total PE 119461
Alloc PE / Size 119460 / 466.64 GB
Free PE / Size 1 / 4.00 MB
VG UUID niUNqx-iivo-V5J6-2M1o-yzNv-Jh1S-mQCxtn
--- Logical volume ---
LV Name /dev/vg00/lvol0
VG Name vg00
LV UUID wWDoA5-AsMp-JDX0-4GAS-1PvM-9y6P-nb1Gve
LV Write Access read/write
LV Status available
# open 1
LV Size 466.64 GB
Current LE 119460
Segments 2
Allocation next free (default)
Read ahead sectors 0
Block device 253:0
--- Physical volumes ---
PV Name /dev/hdg
PV UUID CnAXVt-EufA-th1V-c16y-FCPB-s4qN-jicISO
PV Status allocatable
Total PE / Free PE 59843 / 0
PV Name /dev/hdh
PV UUID 7KH5ls-3YAS-d4VZ-MIrD-1V6d-JQO4-tJtTsx
PV Status allocatable
Total PE / Free PE 59618 / 1
In Fedora 2 I have lvm2-2.00.15-2 package
In Fedora 4 I have lvm2-2.01.08-2.1 package
How do I get rid of the partiton without losing data
I don't have a backup
Richard
>
> Alasdair
>
> _______________________________________________
> linux-lvm mailing list
> linux-lvm@redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
>
^ permalink raw reply
* RE: [linux-usb-devel] Re: 2.6.13-rc4-mm1
From: Aleksey Gorelov @ 2005-08-01 17:50 UTC (permalink / raw)
To: david-b, greg; +Cc: linux-usb-devel, linux-kernel, iogl64nx, akpm
>-----Original Message-----
>From: linux-kernel-owner@vger.kernel.org
>[mailto:linux-kernel-owner@vger.kernel.org] On Behalf Of
>david-b@pacbell.net
>Sent: Sunday, July 31, 2005 7:02 PM
>To: greg@kroah.com
>Cc: linux-usb-devel@lists.sourceforge.net;
>linux-kernel@vger.kernel.org; iogl64nx@gmail.com; akpm@osdl.org
>Subject: Re: [linux-usb-devel] Re: 2.6.13-rc4-mm1
>
>> Date: Sun, 31 Jul 2005 16:02:44 -0700
>> From: Greg KH <greg@kroah.com>
>>
>> On Sun, Jul 31, 2005 at 11:25:10AM -0700, david-b@pacbell.net wrote:
>> > I think that "continuing" codepath came from someone at
>Phoenix, FWIW;
That was me.
>> > the problem is that I see the PCI quirks code has evolved
>even farther
>> > from the main copy of the init code in the USB tree. Sigh.
>>
>> I don't like that either, but can't think of a way to make
>it easier to
>> keep them in sync. Can you?
Major problem here is that handoff may be necessary even if whole
USB support is disabled in config. I was thinking of integrating them
into
USB code somehow, but did not have enough time for it, sorry :(
>
>Sure. The problem as I see it is that there are two copies, and one
>of them isn't in the USB part of the tree. So just move it, and cope
>with the consequences during the 2.6.14 cycle:
>
> (a) Move the USB quirks out of the generic PCI drivers directory
> into the USB HCD directory (see the attached patch);
>
> (b) foreach HCD in (ehci ohci uhci) do:
>
> (1) Merge the two different routines: HCD internal init/reset
> and the PCI quirk code are identical in intent, but they
> each address different sets of quirks.
>
> (2) Then the HCD reset() and PCI quirk() code will call those
> single shared routine.
>
Agree, but at least:
- drivers/Makefile & drivers/usb/Makefile have to be modified as well
to include
quirks on CONFIG_PCI
- Constants like EHCI_USBCMD_RUN should probably be replaced with
'native' usb code ones.
Thanks,
Aleks.
>
>At OLS, Vojtech mentioned wanting to make "usb-handoff" be the default.
>That's seem plausible (USB has more than its fair share of
>BIOS issues!)
>but should only kick in sometime after we merge the two different sets
>of quirk handling logic.
>
>- Dave
>
>
>
>This moves the PCI quirk handling for USB host controllers from the
>PCI directory to the USB directory.
>
>Follow-on patches will need to remove code duplication, and probably
>make "usb-handoff" be the system default.
>
>Compile-tested only so far.
>
>Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
>
>--- g26.orig/drivers/usb/host/Makefile 2005-06-28
>19:23:13.000000000 -0700
>+++ g26/drivers/usb/host/Makefile 2005-07-31
>18:41:35.000000000 -0700
>@@ -1,8 +1,9 @@
> #
>-# Makefile for USB Host Controller Driver
>-# framework and drivers
>+# Makefile for USB Host Controller Drivers
> #
>
>+obj-$(CONFIG_PCI) += pci-quirks.o
>+
> obj-$(CONFIG_USB_EHCI_HCD) += ehci-hcd.o
> obj-$(CONFIG_USB_ISP116X_HCD) += isp116x-hcd.o
> obj-$(CONFIG_USB_OHCI_HCD) += ohci-hcd.o
>--- /dev/null 1970-01-01 00:00:00.000000000 +0000
>+++ g26/drivers/usb/host/pci-quirks.c 2005-07-31
>17:33:38.000000000 -0700
>@@ -0,0 +1,279 @@
>+/*
>+ * This file contains work-arounds for many known PCI
>hardware and BIOS
>+ * quirks relating to USB host controllers.
>+ *
>+ * There are a lot of those, especially on hardware that needs to work
>+ * with USB mice and keyboard for booting. And this code
>needs to fire
>+ * early; before the input subsystem gets initialized, and while BIOS
>+ * (or SMI) code has few problems running.
>+ *
>+ * They're collected here since USB host controller drivers
>need to use
>+ * the same code as part of hardware initialization.
>+ *
>+ * Copyright (c) 1999 Martin Mares <mj@ucw.cz>
>+ * (and others)
>+ */
>+
>+#include <linux/config.h>
>+#include <linux/types.h>
>+#include <linux/kernel.h>
>+#include <linux/pci.h>
>+#include <linux/init.h>
>+#include <linux/delay.h>
>+#include <linux/acpi.h>
>+
>+// #include "pci.h"
>+
>+/*
>+ * PIIX3 USB: We have to disable USB interrupts that are
>+ * hardwired to PIRQD# and may be shared with an
>+ * external device.
>+ *
>+ * Legacy Support Register (LEGSUP):
>+ * bit13: USB PIRQ Enable (USBPIRQDEN),
>+ * bit4: Trap/SMI On IRQ Enable (USBSMIEN).
>+ *
>+ * We mask out all r/wc bits, too.
>+ */
>+static void __devinit quirk_piix3_usb(struct pci_dev *dev)
>+{
>+ u16 legsup;
>+
>+ pci_read_config_word(dev, 0xc0, &legsup);
>+ legsup &= 0x50ef;
>+ pci_write_config_word(dev, 0xc0, legsup);
>+}
>+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL,
>PCI_DEVICE_ID_INTEL_82371SB_2, quirk_piix3_usb );
>+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL,
>PCI_DEVICE_ID_INTEL_82371AB_2, quirk_piix3_usb );
>+
>+
>+/* FIXME this should be the same code that the USB controllers use...
>+ * the hcd->reset() method basically does this.
>+ */
>+
>+#define UHCI_USBLEGSUP 0xc0 /*
>legacy support */
>+#define UHCI_USBCMD 0 /* command register */
>+#define UHCI_USBSTS 2 /* status register */
>+#define UHCI_USBINTR 4 /* interrupt register */
>+#define UHCI_USBLEGSUP_DEFAULT 0x2000 /* only
>PIRQ enable set */
>+#define UHCI_USBCMD_RUN (1 << 0) /*
>RUN/STOP bit */
>+#define UHCI_USBCMD_GRESET (1 << 2) /* Global reset */
>+#define UHCI_USBCMD_CONFIGURE (1 << 6) /* config semaphore */
>+#define UHCI_USBSTS_HALTED (1 << 5) /* HCHalted bit */
>+
>+#define OHCI_CONTROL 0x04
>+#define OHCI_CMDSTATUS 0x08
>+#define OHCI_INTRSTATUS 0x0c
>+#define OHCI_INTRENABLE 0x10
>+#define OHCI_INTRDISABLE 0x14
>+#define OHCI_OCR (1 << 3) /* ownership
>change request */
>+#define OHCI_CTRL_IR (1 << 8) /* interrupt routing */
>+#define OHCI_INTR_OC (1 << 30) /* ownership change */
>+
>+#define EHCI_HCC_PARAMS 0x08 /*
>extended capabilities */
>+#define EHCI_USBCMD 0 /* command register */
>+#define EHCI_USBCMD_RUN (1 << 0) /*
>RUN/STOP bit */
>+#define EHCI_USBSTS 4 /* status register */
>+#define EHCI_USBSTS_HALTED (1 << 12) /* HCHalted bit */
>+#define EHCI_USBINTR 8 /* interrupt register */
>+#define EHCI_USBLEGSUP 0 /*
>legacy support register */
>+#define EHCI_USBLEGSUP_BIOS (1 << 16) /* BIOS semaphore */
>+#define EHCI_USBLEGSUP_OS (1 << 24) /* OS semaphore */
>+#define EHCI_USBLEGCTLSTS 4 /* legacy
>control/status */
>+#define EHCI_USBLEGCTLSTS_SOOE (1 << 13) /* SMI
>on ownership change */
>+
>+int usb_early_handoff __devinitdata = 0;
>+static int __init usb_handoff_early(char *str)
>+{
>+ usb_early_handoff = 1;
>+ return 0;
>+}
>+__setup("usb-handoff", usb_handoff_early);
>+
>+static void __devinit quirk_usb_handoff_uhci(struct pci_dev *pdev)
>+{
>+ unsigned long base = 0;
>+ int wait_time, delta;
>+ u16 val, sts;
>+ int i;
>+
>+ for (i = 0; i < PCI_ROM_RESOURCE; i++)
>+ if ((pci_resource_flags(pdev, i) & IORESOURCE_IO)) {
>+ base = pci_resource_start(pdev, i);
>+ break;
>+ }
>+
>+ if (!base)
>+ return;
>+
>+ /*
>+ * stop controller
>+ */
>+ sts = inw(base + UHCI_USBSTS);
>+ val = inw(base + UHCI_USBCMD);
>+ val &= ~(u16)(UHCI_USBCMD_RUN | UHCI_USBCMD_CONFIGURE);
>+ outw(val, base + UHCI_USBCMD);
>+
>+ /*
>+ * wait while it stops if it was running
>+ */
>+ if ((sts & UHCI_USBSTS_HALTED) == 0)
>+ {
>+ wait_time = 1000;
>+ delta = 100;
>+
>+ do {
>+ outw(0x1f, base + UHCI_USBSTS);
>+ udelay(delta);
>+ wait_time -= delta;
>+ val = inw(base + UHCI_USBSTS);
>+ if (val & UHCI_USBSTS_HALTED)
>+ break;
>+ } while (wait_time > 0);
>+ }
>+
>+ /*
>+ * disable interrupts & legacy support
>+ */
>+ outw(0, base + UHCI_USBINTR);
>+ outw(0x1f, base + UHCI_USBSTS);
>+ pci_read_config_word(pdev, UHCI_USBLEGSUP, &val);
>+ if (val & 0xbf)
>+ pci_write_config_word(pdev, UHCI_USBLEGSUP,
>UHCI_USBLEGSUP_DEFAULT);
>+
>+}
>+
>+static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev)
>+{
>+ void __iomem *base;
>+ int wait_time;
>+
>+ base = ioremap_nocache(pci_resource_start(pdev, 0),
>+ pci_resource_len(pdev, 0));
>+ if (base == NULL) return;
>+
>+ if (readl(base + OHCI_CONTROL) & OHCI_CTRL_IR) {
>+ wait_time = 500; /* 0.5 seconds */
>+ writel(OHCI_INTR_OC, base + OHCI_INTRENABLE);
>+ writel(OHCI_OCR, base + OHCI_CMDSTATUS);
>+ while (wait_time > 0 &&
>+ readl(base + OHCI_CONTROL) &
>OHCI_CTRL_IR) {
>+ wait_time -= 10;
>+ msleep(10);
>+ }
>+ }
>+
>+ /*
>+ * disable interrupts
>+ */
>+ writel(~(u32)0, base + OHCI_INTRDISABLE);
>+ writel(~(u32)0, base + OHCI_INTRSTATUS);
>+
>+ iounmap(base);
>+}
>+
>+static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev)
>+{
>+ int wait_time, delta;
>+ void __iomem *base, *op_reg_base;
>+ u32 hcc_params, val, temp;
>+ u8 cap_length;
>+
>+ base = ioremap_nocache(pci_resource_start(pdev, 0),
>+ pci_resource_len(pdev, 0));
>+ if (base == NULL) return;
>+
>+ cap_length = readb(base);
>+ op_reg_base = base + cap_length;
>+ hcc_params = readl(base + EHCI_HCC_PARAMS);
>+ hcc_params = (hcc_params >> 8) & 0xff;
>+ if (hcc_params) {
>+ pci_read_config_dword(pdev,
>+ hcc_params + EHCI_USBLEGSUP,
>+ &val);
>+ if (((val & 0xff) == 1) && (val &
>EHCI_USBLEGSUP_BIOS)) {
>+ /*
>+ * Ok, BIOS is in smm mode, try to hand off...
>+ */
>+ pci_read_config_dword(pdev,
>+ hcc_params +
>EHCI_USBLEGCTLSTS,
>+ &temp);
>+ pci_write_config_dword(pdev,
>+ hcc_params +
>EHCI_USBLEGCTLSTS,
>+ temp |
>EHCI_USBLEGCTLSTS_SOOE);
>+ val |= EHCI_USBLEGSUP_OS;
>+ pci_write_config_dword(pdev,
>+ hcc_params +
>EHCI_USBLEGSUP,
>+ val);
>+
>+ wait_time = 500;
>+ do {
>+ msleep(10);
>+ wait_time -= 10;
>+ pci_read_config_dword(pdev,
>+ hcc_params +
>EHCI_USBLEGSUP,
>+ &val);
>+ } while (wait_time && (val &
>EHCI_USBLEGSUP_BIOS));
>+ if (!wait_time) {
>+ /*
>+ * well, possibly buggy BIOS...
>+ */
>+ printk(KERN_WARNING "EHCI early
>BIOS handoff "
>+ "failed (BIOS
>bug ?)\n");
>+ pci_write_config_dword(pdev,
>+ hcc_params +
>EHCI_USBLEGSUP,
>+ EHCI_USBLEGSUP_OS);
>+ pci_write_config_dword(pdev,
>+ hcc_params +
>EHCI_USBLEGCTLSTS,
>+ 0);
>+ }
>+ }
>+ }
>+
>+ /*
>+ * halt EHCI & disable its interrupts in any case
>+ */
>+ val = readl(op_reg_base + EHCI_USBSTS);
>+ if ((val & EHCI_USBSTS_HALTED) == 0) {
>+ val = readl(op_reg_base + EHCI_USBCMD);
>+ val &= ~EHCI_USBCMD_RUN;
>+ writel(val, op_reg_base + EHCI_USBCMD);
>+
>+ wait_time = 2000;
>+ delta = 100;
>+ do {
>+ writel(0x3f, op_reg_base + EHCI_USBSTS);
>+ udelay(delta);
>+ wait_time -= delta;
>+ val = readl(op_reg_base + EHCI_USBSTS);
>+ if ((val == ~(u32)0) || (val &
>EHCI_USBSTS_HALTED)) {
>+ break;
>+ }
>+ } while (wait_time > 0);
>+ }
>+ writel(0, op_reg_base + EHCI_USBINTR);
>+ writel(0x3f, op_reg_base + EHCI_USBSTS);
>+
>+ iounmap(base);
>+
>+ return;
>+}
>+
>+
>+
>+static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
>+{
>+ if (!usb_early_handoff)
>+ return;
>+
>+ if (pdev->class == ((PCI_CLASS_SERIAL_USB << 8) |
>0x00)) { /* UHCI */
>+ quirk_usb_handoff_uhci(pdev);
>+ } else if (pdev->class == ((PCI_CLASS_SERIAL_USB << 8)
>| 0x10)) { /* OHCI */
>+ quirk_usb_handoff_ohci(pdev);
>+ } else if (pdev->class == ((PCI_CLASS_SERIAL_USB << 8)
>| 0x20)) { /* EHCI */
>+ quirk_usb_disable_ehci(pdev);
>+ }
>+
>+ return;
>+}
>+DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID,
>quirk_usb_early_handoff);
>--- g26.orig/drivers/pci/quirks.c 2005-07-12
>05:38:23.000000000 -0700
>+++ g26/drivers/pci/quirks.c 2005-07-31 17:26:11.000000000 -0700
>@@ -7,6 +7,9 @@
> *
> * Copyright (c) 1999 Martin Mares <mj@ucw.cz>
> *
>+ * Quirks for USB host controllers should be handled in the USB
>+ * quirks file; that code is reused by host controller drivers.
>+ *
> * The bridge optimization stuff has been removed. If you really
> * have a silly BIOS which is unable to set your host bridge right,
> * use the PowerTweak utility (see
>http://powertweak.sourceforge.net).
>@@ -513,28 +516,6 @@ static void quirk_via_irq(struct pci_dev
> DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID,
>quirk_via_irq);
>
> /*
>- * PIIX3 USB: We have to disable USB interrupts that are
>- * hardwired to PIRQD# and may be shared with an
>- * external device.
>- *
>- * Legacy Support Register (LEGSUP):
>- * bit13: USB PIRQ Enable (USBPIRQDEN),
>- * bit4: Trap/SMI On IRQ Enable (USBSMIEN).
>- *
>- * We mask out all r/wc bits, too.
>- */
>-static void __devinit quirk_piix3_usb(struct pci_dev *dev)
>-{
>- u16 legsup;
>-
>- pci_read_config_word(dev, 0xc0, &legsup);
>- legsup &= 0x50ef;
>- pci_write_config_word(dev, 0xc0, legsup);
>-}
>-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL,
>PCI_DEVICE_ID_INTEL_82371SB_2, quirk_piix3_usb );
>-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL,
>PCI_DEVICE_ID_INTEL_82371AB_2, quirk_piix3_usb );
>-
>-/*
> * VIA VT82C598 has its device ID settable and many BIOSes
> * set it to the ID of VT82C597 for backward compatibility.
> * We need to switch it off to be able to recognize the real
>@@ -871,234 +852,6 @@ static void __init quirk_sis_96x_smbus(s
> pci_read_config_byte(dev, 0x77, &val);
> }
>
>-
>-#define UHCI_USBLEGSUP 0xc0 /*
>legacy support */
>-#define UHCI_USBCMD 0 /* command register */
>-#define UHCI_USBSTS 2 /* status register */
>-#define UHCI_USBINTR 4 /* interrupt register */
>-#define UHCI_USBLEGSUP_DEFAULT 0x2000 /* only
>PIRQ enable set */
>-#define UHCI_USBCMD_RUN (1 << 0) /*
>RUN/STOP bit */
>-#define UHCI_USBCMD_GRESET (1 << 2) /* Global reset */
>-#define UHCI_USBCMD_CONFIGURE (1 << 6) /* config semaphore */
>-#define UHCI_USBSTS_HALTED (1 << 5) /* HCHalted bit */
>-
>-#define OHCI_CONTROL 0x04
>-#define OHCI_CMDSTATUS 0x08
>-#define OHCI_INTRSTATUS 0x0c
>-#define OHCI_INTRENABLE 0x10
>-#define OHCI_INTRDISABLE 0x14
>-#define OHCI_OCR (1 << 3) /* ownership
>change request */
>-#define OHCI_CTRL_IR (1 << 8) /* interrupt routing */
>-#define OHCI_INTR_OC (1 << 30) /* ownership change */
>-
>-#define EHCI_HCC_PARAMS 0x08 /*
>extended capabilities */
>-#define EHCI_USBCMD 0 /* command register */
>-#define EHCI_USBCMD_RUN (1 << 0) /*
>RUN/STOP bit */
>-#define EHCI_USBSTS 4 /* status register */
>-#define EHCI_USBSTS_HALTED (1 << 12) /* HCHalted bit */
>-#define EHCI_USBINTR 8 /* interrupt register */
>-#define EHCI_USBLEGSUP 0 /*
>legacy support register */
>-#define EHCI_USBLEGSUP_BIOS (1 << 16) /* BIOS semaphore */
>-#define EHCI_USBLEGSUP_OS (1 << 24) /* OS semaphore */
>-#define EHCI_USBLEGCTLSTS 4 /* legacy
>control/status */
>-#define EHCI_USBLEGCTLSTS_SOOE (1 << 13) /* SMI
>on ownership change */
>-
>-int usb_early_handoff __devinitdata = 0;
>-static int __init usb_handoff_early(char *str)
>-{
>- usb_early_handoff = 1;
>- return 0;
>-}
>-__setup("usb-handoff", usb_handoff_early);
>-
>-static void __devinit quirk_usb_handoff_uhci(struct pci_dev *pdev)
>-{
>- unsigned long base = 0;
>- int wait_time, delta;
>- u16 val, sts;
>- int i;
>-
>- for (i = 0; i < PCI_ROM_RESOURCE; i++)
>- if ((pci_resource_flags(pdev, i) & IORESOURCE_IO)) {
>- base = pci_resource_start(pdev, i);
>- break;
>- }
>-
>- if (!base)
>- return;
>-
>- /*
>- * stop controller
>- */
>- sts = inw(base + UHCI_USBSTS);
>- val = inw(base + UHCI_USBCMD);
>- val &= ~(u16)(UHCI_USBCMD_RUN | UHCI_USBCMD_CONFIGURE);
>- outw(val, base + UHCI_USBCMD);
>-
>- /*
>- * wait while it stops if it was running
>- */
>- if ((sts & UHCI_USBSTS_HALTED) == 0)
>- {
>- wait_time = 1000;
>- delta = 100;
>-
>- do {
>- outw(0x1f, base + UHCI_USBSTS);
>- udelay(delta);
>- wait_time -= delta;
>- val = inw(base + UHCI_USBSTS);
>- if (val & UHCI_USBSTS_HALTED)
>- break;
>- } while (wait_time > 0);
>- }
>-
>- /*
>- * disable interrupts & legacy support
>- */
>- outw(0, base + UHCI_USBINTR);
>- outw(0x1f, base + UHCI_USBSTS);
>- pci_read_config_word(pdev, UHCI_USBLEGSUP, &val);
>- if (val & 0xbf)
>- pci_write_config_word(pdev, UHCI_USBLEGSUP,
>UHCI_USBLEGSUP_DEFAULT);
>-
>-}
>-
>-static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev)
>-{
>- void __iomem *base;
>- int wait_time;
>-
>- base = ioremap_nocache(pci_resource_start(pdev, 0),
>- pci_resource_len(pdev, 0));
>- if (base == NULL) return;
>-
>- if (readl(base + OHCI_CONTROL) & OHCI_CTRL_IR) {
>- wait_time = 500; /* 0.5 seconds */
>- writel(OHCI_INTR_OC, base + OHCI_INTRENABLE);
>- writel(OHCI_OCR, base + OHCI_CMDSTATUS);
>- while (wait_time > 0 &&
>- readl(base + OHCI_CONTROL) &
>OHCI_CTRL_IR) {
>- wait_time -= 10;
>- msleep(10);
>- }
>- }
>-
>- /*
>- * disable interrupts
>- */
>- writel(~(u32)0, base + OHCI_INTRDISABLE);
>- writel(~(u32)0, base + OHCI_INTRSTATUS);
>-
>- iounmap(base);
>-}
>-
>-static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev)
>-{
>- int wait_time, delta;
>- void __iomem *base, *op_reg_base;
>- u32 hcc_params, val, temp;
>- u8 cap_length;
>-
>- base = ioremap_nocache(pci_resource_start(pdev, 0),
>- pci_resource_len(pdev, 0));
>- if (base == NULL) return;
>-
>- cap_length = readb(base);
>- op_reg_base = base + cap_length;
>- hcc_params = readl(base + EHCI_HCC_PARAMS);
>- hcc_params = (hcc_params >> 8) & 0xff;
>- if (hcc_params) {
>- pci_read_config_dword(pdev,
>- hcc_params + EHCI_USBLEGSUP,
>- &val);
>- if (((val & 0xff) == 1) && (val &
>EHCI_USBLEGSUP_BIOS)) {
>- /*
>- * Ok, BIOS is in smm mode, try to hand off...
>- */
>- pci_read_config_dword(pdev,
>- hcc_params +
>EHCI_USBLEGCTLSTS,
>- &temp);
>- pci_write_config_dword(pdev,
>- hcc_params +
>EHCI_USBLEGCTLSTS,
>- temp |
>EHCI_USBLEGCTLSTS_SOOE);
>- val |= EHCI_USBLEGSUP_OS;
>- pci_write_config_dword(pdev,
>- hcc_params +
>EHCI_USBLEGSUP,
>- val);
>-
>- wait_time = 500;
>- do {
>- msleep(10);
>- wait_time -= 10;
>- pci_read_config_dword(pdev,
>- hcc_params +
>EHCI_USBLEGSUP,
>- &val);
>- } while (wait_time && (val &
>EHCI_USBLEGSUP_BIOS));
>- if (!wait_time) {
>- /*
>- * well, possibly buggy BIOS...
>- */
>- printk(KERN_WARNING "EHCI early
>BIOS handoff "
>- "failed (BIOS
>bug ?)\n");
>- pci_write_config_dword(pdev,
>- hcc_params +
>EHCI_USBLEGSUP,
>- EHCI_USBLEGSUP_OS);
>- pci_write_config_dword(pdev,
>- hcc_params +
>EHCI_USBLEGCTLSTS,
>- 0);
>- }
>- }
>- }
>-
>- /*
>- * halt EHCI & disable its interrupts in any case
>- */
>- val = readl(op_reg_base + EHCI_USBSTS);
>- if ((val & EHCI_USBSTS_HALTED) == 0) {
>- val = readl(op_reg_base + EHCI_USBCMD);
>- val &= ~EHCI_USBCMD_RUN;
>- writel(val, op_reg_base + EHCI_USBCMD);
>-
>- wait_time = 2000;
>- delta = 100;
>- do {
>- writel(0x3f, op_reg_base + EHCI_USBSTS);
>- udelay(delta);
>- wait_time -= delta;
>- val = readl(op_reg_base + EHCI_USBSTS);
>- if ((val == ~(u32)0) || (val &
>EHCI_USBSTS_HALTED)) {
>- break;
>- }
>- } while (wait_time > 0);
>- }
>- writel(0, op_reg_base + EHCI_USBINTR);
>- writel(0x3f, op_reg_base + EHCI_USBSTS);
>-
>- iounmap(base);
>-
>- return;
>-}
>-
>-
>-
>-static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
>-{
>- if (!usb_early_handoff)
>- return;
>-
>- if (pdev->class == ((PCI_CLASS_SERIAL_USB << 8) |
>0x00)) { /* UHCI */
>- quirk_usb_handoff_uhci(pdev);
>- } else if (pdev->class == ((PCI_CLASS_SERIAL_USB << 8)
>| 0x10)) { /* OHCI */
>- quirk_usb_handoff_ohci(pdev);
>- } else if (pdev->class == ((PCI_CLASS_SERIAL_USB << 8)
>| 0x20)) { /* EHCI */
>- quirk_usb_disable_ehci(pdev);
>- }
>-
>- return;
>-}
>-DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID,
>quirk_usb_early_handoff);
>-
> /*
> * ... This is further complicated by the fact that some SiS96x south
> * bridges pretend to be 85C503/5513 instead. In that case see if we
>-
>To unsubscribe from this list: send the line "unsubscribe
>linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at http://www.tux.org/lkml/
>
^ permalink raw reply
* Re: mpc8248 SEC -- interrupt handler "is" invoked
From: Kim Phillips @ 2005-08-01 17:37 UTC (permalink / raw)
To: Vikas Aggarwal; +Cc: linuxppc-embedded
In-Reply-To: <33216.24.92.61.26.1122857296.squirrel@24.92.61.26>
On Sun, 31 Jul 2005 20:48:16 -0400 (EDT)
"Vikas Aggarwal" <va824363@albany.edu> wrote:
> Tried it as u said . No luck :(
> But something more i noted now in CPSR(channel pointer status
> register=0x2040) that before ISR invoked it has 0x0:0x7.
>
> After ISR invoked it has 0x7:0x2007 . The 7 in low bits means
> channel_error and 2 is at "reserved" bits as per documentation, don't know
> what that means.
>
> I also tried kmalloc with GFP_DMA, for the memory where i create the
> Descriptor.
> Please keep giving ideas for debugging this as this is what driving me
> right now.
> regards
> -vikas
So you reset the master, then the channel, allocate the RNG descriptor, allocate the random data buffer, fill the descriptor with values for an RNG request the size of your buffer (filling with the physical address of your random data buffer), and submit the descriptor's physical address to the FR..
btw, I'm finding it hard to help without seeing sec register transaction data, descriptor data, virtual and physical addresses, etc.
Kim
^ permalink raw reply
* [PATCH] EXPORT_SYMBOL_GPL in talk-conntrack-nat and quake3-conntrack-nat appears to be missing (kernel 2.6.12)
From: Franz Ferdinand @ 2005-08-01 17:37 UTC (permalink / raw)
To: netfilter-devel
Depmod reports missing symbols in the two modules. Below is the fix:
//////////////////////////
1. talk-conntrack-nat.
//////////////////////////
--- patch-o-matic-ng/patchlets/talk-conntrack-
nat/linux-2.6.11/net/ipv4/netfilter/ip_conntrack_talk.c.orig 2005-07-28
22:39:52.000000000 +0200
+++ patch-o-matic-ng/patchlets/talk-conntrack-
nat/linux-2.6.11/net/ipv4/netfilter/ip_conntrack_talk.c 2005-08-01
01:09:51.000000000 +0200
@@ -101,8 +101,11 @@
void ip_ct_talk_expect(struct ip_conntrack *ct,
struct ip_conntrack_expect *exp);
+EXPORT_SYMBOL_GPL(ip_ct_talk_expect);
+
void ip_ct_ntalk_expect(struct ip_conntrack *ct,
struct ip_conntrack_expect *exp);
+EXPORT_SYMBOL_GPL(ip_ct_ntalk_expect);
static void (*talk_expectfn[2])(struct ip_conntrack *ct,
struct ip_conntrack_expect *exp) = {
//////////////////////////
2. quake-conntrack-nat.
//////////////////////////
--- patch-o-matic-ng/patchlets/quake3-conntrack-
nat/linux-2.6.11/net/ipv4/netfilter/ip_conntrack_quake3.c.orig
2005-08-01 00:58:08.000000000 +0200
+++ patch-o-matic-ng/patchlets/quake3-conntrack-
nat/linux-2.6.11/net/ipv4/netfilter/ip_conntrack_quake3.c 2005-08-01
00:54:24.000000000 +0200
@@ -42,7 +42,8 @@
static char quake3_buffer[65536];
static DECLARE_LOCK(quake3_buffer_lock);
-static unsigned int (*ip_nat_quake3_hook)(struct ip_conntrack_expect
*exp);
+unsigned int (*ip_nat_quake3_hook)(struct ip_conntrack_expect *exp);
+EXPORT_SYMBOL_GPL(ip_nat_quake3_hook);
/* Quake3 master server reply will add > 100 expectations per reply
packet; when
doing lots of printk's, klogd may not be able to read /proc/kmsg
fast enough */
//////////////////////////
and a small suggestion.
For those, who creates series of patches with pom2patch, the following
might be useful, freeing people from specifying kernel and iptables dirs
on the command line over and over again:
//////////////////////////
--- patch-o-matic-ng/pom2patch/pom2patch.orig 2005-08-01
17:20:05.000000000 +0200
+++ patch-o-matic-ng/pom2patch/pom2patch 2005-08-01 17:18:28.000000000
+0200
@@ -8,14 +8,30 @@
POMDIR=`pwd`
-PLAINKERNEL=$1
-PATCH=$2
+# Is calling pom2patch from the POM root dir the usual way
+# to do it? If so, put dirname guard here.
+P2PPREFIX=`dirname $0`
-if [ "$1" = "" -o "$2" = "" ]; then
- echo Please specify kernel and patch as parameters
+if [ -f $P2PPREFIX/pom2patch.conf ]; then
+ . $P2PPREFIX/pom2patch.conf
+fi
+
+PLAINKERNEL=$KERNELDIR
+PATCH=$1
+
+if [ "$1" = "" ]; then
+ echo Please specify patch as parameter
exit 1
fi
+if [ -z "$PLAINKERNEL" ]; then
+ if [ -z "$2" ]; then
+ echo "Please specify kernel path either as parameter or KERNELDIR in
pom2patch.conf"
+ exit 1
+ else
+ PLAINKERNEL=$2
+ fi
+fi
WORKDIR=`dirname $PLAINKERNEL`
KERNEL=`basename $PLAINKERNEL`
@@ -45,7 +61,12 @@
OLDPWD=`pwd`
cd $POMDIR
export KERNEL_DIR=$WORKDIR/$KERNEL_OUT
-export IPTABLES_DIR=/usr/src/iptables
+
+if [ ! -z "$IPTABLESDIR" ]; then
+ export IPTABLES_DIR=$IPTABLESDIR
+else
+ export IPTABLES_DIR=/usr/src/iptables
+fi
echo "y" | ./runme $PATCH > /dev/null #2>&1
cd $OLDPWD
diff -Nru $KERNEL $KERNEL_OUT
//////////////////////////
and the config file itself
//////////////////////////
--- /dev/null 2005-08-01 16:31:38.363880520 +0200
+++ patch-o-matic-ng/pom2patch/pom2patch.conf 2005-08-01
19:30:30.000000000 +0200
@@ -0,0 +1,2 @@
+KERNELDIR=
+IPTABLESDIR=
//////////////////////////
Regards,
Michailow
^ permalink raw reply
* [Qemu-devel] Possible bug?
From: J.N. Herder @ 2005-08-01 17:27 UTC (permalink / raw)
To: qemu-devel
Hi all,
I'm having some troubles with QEMU's hard disk images and may have bumped
into a bug. I'm trying to import data into my emulated MINIX, but somehow
it is truncated.
I successfully created a qemu-img called hda.img of 512 MB and installed
the latest version from MINIX on it. Trying to import files by using the
file as hdb image and reading from /dev/hdb in the emulated MINIX works
perfectly fine for small files. For an import file above 1.5 MB the
following weirdiness happens:
In linux:
$ qemu -hda hda.img -hdb import.tar.gz
After booting MINIX with QEMU:
# dd if=/dev/hdb of=import.tar.gz bs=1 count=1672014
# ls -l import.tar.gz
-rw-r--r-- 1 root operator 1548288 Jul 31 20:34 import.tar.gz
Somehow the file is truncated at exactly 1.5 MB, while the dd output
indicates that all records were successfully read.
Inspection of /dev/hdb with MINIX' part tools also learns that the QEMU
emulated hard disk is 1512 KB.
I'd like to note that for several small files (less than 1 MB) this
procedure worked fine.
Another file of 75582464 bytes was truncated at 73584 KB.
Could this behaviour be caused by a bug in QEMU?
Please CC the reply to jnherder@cs.vu.nl as I'm not a list member.
Thanks,
Jorrit
^ permalink raw reply
* Re: [patch] remove sys_set_zone_reclaim()
From: Andrew Morton @ 2005-08-01 17:29 UTC (permalink / raw)
To: Ingo Molnar; +Cc: mort, torvalds, linux-kernel, ak
In-Reply-To: <20050801113913.GA7000@elte.hu>
Ingo Molnar <mingo@elte.hu> wrote:
>
> the patch below removes sys_set_zone_reclaim() for now.
Probably the right thing to do.
> ...
> Firstly, the syscall lacks basic syscall design: e.g. it allows the
> global setting of VM policy for unprivileged users. (!)
Martin sent a patch to make it CAP_SYS_ADMIN-only.
> We could perhaps add a CAP_SYS_ADMIN-only sysctl for this hack,
That would be more appropriate.
(I'm still not sure what happened to the idea of adding a call to "clear
out this node+zone's pagecache now" rather than "set this noed+zone's
policy")
^ permalink raw reply
* RE: 2.6.13-rc4-mm1
From: Aleksey Gorelov @ 2005-08-01 17:26 UTC (permalink / raw)
To: Michael Thonke, Andrew Morton; +Cc: linux-kernel
>-----Original Message-----
>From: linux-kernel-owner@vger.kernel.org
>[mailto:linux-kernel-owner@vger.kernel.org] On Behalf Of Michael Thonke
>Sent: Sunday, July 31, 2005 8:12 AM
>To: Andrew Morton
>Cc: linux-kernel@vger.kernel.org
>Subject: Re: 2.6.13-rc4-mm1
>
>Hello Andrew,
>
>the ACPI bug or the problems with 2.6.13-rc3-mm[2,3] gone.
>The system boots now noiseless, except on problem with USB.
>
>If my Prolific USB-Serialadapter plugged in on reboot
>the ehci_hcd driver complains about a Hand-off bug in Bios.
>
>-> snip
>
>ehci_hcd 0000:00:1d.7: EHCI Host Controller
>
>ehci_hcd 0000:00:1d.7: debug port 1
>
>ehci_hcd 0000:00:1d.7: BIOS handoff failed (104, 01010001)
>
>ehci_hcd 0000:00:1d.7: continuing after BIOS bug...
>
>ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
>
>ehci_hcd 0000:00:1d.7: irq 161, io mem 0xd2dffc00
>
>-> snip
>
>
>I wonder about this because all other USB devices working without this
>message on boot.
>
>USB Mouse,Keyboard and USB Storage and all mixed from USB 1.1 and 2.
>
>When I rebooted without plugged Prolific Adapter and plug them in the
>same port
>the kernel prints this message.
>
>->snip
>
>usb 4-1: new full speed USB device using uhci_hcd and address 2
>
>pl2303 4-1:1.0: PL-2303 converter detected
>
>usb 4-1: PL-2303 converter now attached to ttyUSB0
>
>-> snip
>
>
>Any Ideas what could be wrong here?
>
Could you try 'usb-handoff' as a kernel parameter. Is it any better ?
Aleks.
^ permalink raw reply
* Plextor 712-sa write issue (repost)
From: Polly @ 2005-08-01 17:23 UTC (permalink / raw)
To: linux-ide
Hi,
This is my second post on this issue, in the hopes
that someone can enlighten me, or point me off to the
right resource for this problem.
I can mount my Plextor 712 SA DVD burner read-only,
but I can't mount it read-write. I have an Intel ICH6
SATA controller:
---
Jul 28 11:37:54 HTPC kernel: cdrom: sr0: mrw address
space DMA selected
Jul 28 11:37:54 HTPC kernel: attempt to access beyond
end of device
Jul 28 11:37:54 HTPC kernel: sr0: rw=0, want=68,
limit=4
Jul 28 11:37:54 HTPC kernel: isofs_fill_super: bread
failed, dev=sr0, iso_blknum=16, block=16
---
I am running under 2.6.12.3, with ATA_ENABLE_ATAPI and
ATA_ENABLE_PATA in libata.h turned on.
- Is this a known issue? If so, is there a bug number
I should track, a branch or release I should be
keeping an eye on? Should I be trying out a particular
patch? Is there a workaround for this?
- If this is not a known issue, should I open a
bugzilla report on this? Is there additional
information that would be useful for me to include in
a report?
Again, if there are developers that are working on
this, I'd be happy to work with you as an alpha test
site.
Thank you for your time,
Polly
____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs
^ permalink raw reply
* Re: [PATCH 5/7] Fix a deadlock in new_conntrack
From: Patrick McHardy @ 2005-08-01 17:21 UTC (permalink / raw)
To: Pablo Neira; +Cc: Harald Welte, Netfilter Development Mailinglist
In-Reply-To: <42EE58D7.9010005@trash.net>
Patrick McHardy wrote:
> Pablo Neira wrote:
>
>>Fix a deadlock during conntrack creation. ip_conntrack_lock is unlocked
>>twice.
>
>
> Please keep the exit paths at the end by adding a out: label.
Don't bother, they aren't at the end right now :)
^ permalink raw reply
* [PATCH] Convert balloon driver to xenstore
From: Dan Smith @ 2005-08-01 17:19 UTC (permalink / raw)
To: xen-devel
[-- Attachment #1: Type: text/plain, Size: 346 bytes --]
The attached patch converts the balloon driver and xend to use
xenstore instead of control messages.
Note: Because there is no way to set a watch on a non-existent key,
this patch includes a workaround to account for the fact that dom0's
store keys are not initialized by the tools before it boots.
Signed-off-by: Dan Smith <danms@us.ibm.com>
[-- Attachment #2: balloon.patch --]
[-- Type: text/plain, Size: 9121 bytes --]
diff -r 0db6a59abb95 -r b3ead8c9affb linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c
--- a/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c Mon Aug 1 10:48:24 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/balloon/balloon.c Mon Aug 1 17:03:55 2005
@@ -5,6 +5,7 @@
*
* Copyright (c) 2003, B Dragovic
* Copyright (c) 2003-2004, M Williamson, K Fraser
+ * Copyright (c) 2005 Dan M. Smith, IBM Corporation
*
* This file may be distributed separately from the Linux kernel, or
* incorporated into other software packages, subject to the following license:
@@ -42,7 +43,6 @@
#include <linux/vmalloc.h>
#include <asm-xen/xen_proc.h>
#include <asm-xen/hypervisor.h>
-#include <asm-xen/ctrl_if.h>
#include <asm-xen/balloon.h>
#include <asm/pgalloc.h>
#include <asm/pgtable.h>
@@ -50,6 +50,10 @@
#include <asm/tlb.h>
#include <linux/list.h>
+#include<asm-xen/xenbus.h>
+
+#define PAGES2KB(_p) ((_p)<<(PAGE_SHIFT-10))
+
static struct proc_dir_entry *balloon_pde;
static DECLARE_MUTEX(balloon_mutex);
@@ -77,11 +81,17 @@
static DECLARE_WORK(balloon_worker, balloon_process, NULL);
static struct timer_list balloon_timer;
+/* Flag for dom0 xenstore workaround */
+static int balloon_xenbus_init=0;
+
+/* Init Function */
+void balloon_init_watcher(void);
+
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
/* Use the private and mapping fields of struct page as a list. */
#define PAGE_TO_LIST(p) ( (struct list_head *)&p->private )
#define LIST_TO_PAGE(l) ( list_entry( ((unsigned long *)l), \
- struct page, private ) )
+ struct page, private ) )
#define UNLIST_PAGE(p) do { list_del(PAGE_TO_LIST(p)); \
p->mapping = NULL; \
p->private = 0; } while(0)
@@ -297,25 +307,96 @@
schedule_work(&balloon_worker);
}
-static void balloon_ctrlif_rx(ctrl_msg_t *msg, unsigned long id)
-{
- switch ( msg->subtype )
- {
- case CMSG_MEM_REQUEST_SET:
- {
- mem_request_t *req = (mem_request_t *)&msg->msg[0];
- set_new_target(req->target);
- req->status = 0;
- }
- break;
-
- default:
- msg->length = 0;
- break;
- }
-
- ctrl_if_send_response(msg);
-}
+static struct xenbus_watch xb_watch =
+{
+ .node = "memory"
+};
+
+/* FIXME: This is part of a dom0 sequencing workaround */
+static struct xenbus_watch root_watch =
+{
+ .node = "/"
+};
+
+/* React to a change in the target key */
+static void watch_target(struct xenbus_watch *watch, const char *node)
+{
+ unsigned long new_target;
+ int err;
+
+ if(watch == &root_watch)
+ {
+ /* FIXME: This is part of a dom0 sequencing workaround */
+ if(register_xenbus_watch(&xb_watch) == 0)
+ {
+ /*
+ We successfully set a watch on memory/target:
+ now we can stop watching root
+ */
+ unregister_xenbus_watch(&root_watch);
+ balloon_xenbus_init=1;
+ }
+ else
+ {
+ return;
+ }
+ }
+
+ err = xenbus_scanf("memory", "target", "%lu", &new_target);
+
+ if(err != 1)
+ {
+ IPRINTK("Unable to read memory/target\n");
+ return;
+ }
+
+ set_new_target(new_target >> PAGE_SHIFT);
+
+}
+
+/*
+ Try to set up our watcher, if not already set
+
+*/
+void balloon_init_watcher(void)
+{
+ int err;
+
+ if(!xen_start_info.store_evtchn)
+ {
+ IPRINTK("Delaying watcher init until xenstore is available\n");
+ return;
+ }
+
+ down(&xenbus_lock);
+
+ if(! balloon_xenbus_init)
+ {
+ err = register_xenbus_watch(&xb_watch);
+ if(err)
+ {
+ /* BIG FAT FIXME: dom0 sequencing workaround
+ * dom0 can't set a watch on memory/target until
+ * after the tools create it. So, we have to watch
+ * the whole store until that happens.
+ *
+ * This will go away when we have the ability to watch
+ * non-existant keys
+ */
+ register_xenbus_watch(&root_watch);
+ }
+ else
+ {
+ IPRINTK("Balloon xenbus watcher initialized\n");
+ balloon_xenbus_init = 1;
+ }
+ }
+
+ up(&xenbus_lock);
+
+}
+
+EXPORT_SYMBOL(balloon_init_watcher);
static int balloon_write(struct file *file, const char __user *buffer,
unsigned long count, void *data)
@@ -346,7 +427,6 @@
{
int len;
-#define K(_p) ((_p)<<(PAGE_SHIFT-10))
len = sprintf(
page,
"Current allocation: %8lu kB\n"
@@ -354,13 +434,14 @@
"Low-mem balloon: %8lu kB\n"
"High-mem balloon: %8lu kB\n"
"Xen hard limit: ",
- K(current_pages), K(target_pages), K(balloon_low), K(balloon_high));
+ PAGES2KB(current_pages), PAGES2KB(target_pages),
+ PAGES2KB(balloon_low), PAGES2KB(balloon_high));
if ( hard_limit != ~0UL )
len += sprintf(
page + len,
"%8lu kB (inc. %8lu kB driver headroom)\n",
- K(hard_limit), K(driver_pages));
+ PAGES2KB(hard_limit), PAGES2KB(driver_pages));
else
len += sprintf(
page + len,
@@ -396,9 +477,7 @@
balloon_pde->read_proc = balloon_read;
balloon_pde->write_proc = balloon_write;
-
- (void)ctrl_if_register_receiver(CMSG_MEM_REQUEST, balloon_ctrlif_rx, 0);
-
+
/* Initialise the balloon with excess memory space. */
for ( pfn = xen_start_info.nr_pages; pfn < max_pfn; pfn++ )
{
@@ -406,6 +485,11 @@
if ( !PageReserved(page) )
balloon_append(page);
}
+
+ xb_watch.callback = watch_target;
+ root_watch.callback = watch_target;
+
+ balloon_init_watcher();
return 0;
}
diff -r 0db6a59abb95 -r b3ead8c9affb linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c Mon Aug 1 10:48:24 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c Mon Aug 1 17:03:55 2005
@@ -309,6 +309,9 @@
return err;
}
+ /* Initialize non-xenbus drivers */
+ balloon_init_watcher();
+
down(&xenbus_lock);
/* Enumerate devices in xenstore. */
xenbus_probe_devices("device");
diff -r 0db6a59abb95 -r b3ead8c9affb tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py Mon Aug 1 10:48:24 2005
+++ b/tools/python/xen/xend/XendDomainInfo.py Mon Aug 1 17:03:55 2005
@@ -152,6 +152,9 @@
vm = cls(db)
vm.construct(config)
vm.saveToDB(sync=True)
+ # Flush info to xenstore immediately
+ vm.exportToDB()
+
return vm
create = classmethod(create)
@@ -172,6 +175,7 @@
log.debug('config=' + prettyprintstring(config))
vm.memory = info['mem_kb']/1024
+ vm.target = info['mem_kb'] * 1024
if config:
try:
@@ -222,6 +226,7 @@
DBVar('restart_state', ty='str'),
DBVar('restart_time', ty='float'),
DBVar('restart_count', ty='int'),
+ DBVar('target', ty='long', path="memory/target"),
]
def __init__(self, db):
@@ -239,6 +244,8 @@
self.memory = None
self.ssidref = None
self.image = None
+
+ self.target = None
self.channel = None
self.store_channel = None
@@ -315,6 +322,7 @@
self.info = info
self.memory = self.info['mem_kb'] / 1024
self.ssidref = self.info['ssidref']
+ self.target = self.info['mem_kb'] * 1024
def state_set(self, state):
self.state_updated.acquire()
@@ -399,7 +407,8 @@
['id', self.id],
['name', self.name],
['memory', self.memory],
- ['ssidref', self.ssidref] ]
+ ['ssidref', self.ssidref],
+ ['target', self.target] ]
if self.uuid:
sxpr.append(['uuid', self.uuid])
if self.info:
@@ -536,6 +545,7 @@
self.memory = int(sxp.child_value(config, 'memory'))
if self.memory is None:
raise VmError('missing memory size')
+ self.target = self.memory * (1 << 20)
self.ssidref = int(sxp.child_value(config, 'ssidref'))
cpu = sxp.child_value(config, 'cpu')
if self.recreate and self.id and cpu is not None and int(cpu) >= 0:
@@ -947,11 +957,12 @@
index[field_name] = field_index + 1
def mem_target_set(self, target):
- """Set domain memory target in pages.
- """
- if self.channel:
- msg = messages.packMsg('mem_request_t', { 'target' : target * (1 << 8)} )
- self.channel.writeRequest(msg)
+ """Set domain memory target in bytes.
+ """
+ if target:
+ self.target = target * (1 << 20)
+ # Commit to XenStore immediately
+ self.exportToDB()
def vcpu_hotplug(self, vcpu, state):
"""Disable or enable VCPU in domain.
[-- Attachment #3: Type: text/plain, Size: 88 bytes --]
--
Dan Smith
IBM Linux Technology Center
Open Hypervisor Team
email: danms@us.ibm.com
[-- Attachment #4: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply
* Re: [PATCH 5/7] Fix a deadlock in new_conntrack
From: Patrick McHardy @ 2005-08-01 17:16 UTC (permalink / raw)
To: Pablo Neira; +Cc: Harald Welte, Netfilter Development Mailinglist
In-Reply-To: <42EE564E.1090308@eurodev.net>
Pablo Neira wrote:
> Fix a deadlock during conntrack creation. ip_conntrack_lock is unlocked
> twice.
Please keep the exit paths at the end by adding a out: label.
> ------------------------------------------------------------------------
>
> Index: netfilter-2.6.14/net/ipv4/netfilter/ip_conntrack_netlink.c
> ===================================================================
> --- netfilter-2.6.14.orig/net/ipv4/netfilter/ip_conntrack_netlink.c 2005-08-01 18:21:13.000000000 +0200
> +++ netfilter-2.6.14/net/ipv4/netfilter/ip_conntrack_netlink.c 2005-08-01 18:21:18.000000000 +0200
> @@ -1094,13 +1094,12 @@
> err = -ENOENT;
> if (nlh->nlmsg_flags & NLM_F_CREATE)
> err = ctnetlink_create_conntrack(cda, &otuple, &rtuple);
> + return err;
> + }
> + /* we only allow nat config for new conntracks */
> + if (cda[CTA_NAT-1]) {
> + err = -EINVAL;
> goto out_unlock;
> - } else {
> - /* we only allow nat config for new conntracks */
> - if (cda[CTA_NAT-1]) {
> - err = -EINVAL;
> - goto out_unlock;
> - }
> }
>
> /* We manipulate the conntrack inside the global conntrack table lock,
^ permalink raw reply
* Re: [sched, patch] better wake-balancing, #3
From: Siddha, Suresh B @ 2005-08-01 17:13 UTC (permalink / raw)
To: Nick Piggin
Cc: Ingo Molnar, Chen, Kenneth W, linux-kernel, linux-ia64,
Andrew Morton, John Hawkes, Martin J. Bligh, Paul Jackson
In-Reply-To: <42EC2624.7030509@yahoo.com.au>
On Sun, Jul 31, 2005 at 11:15:16AM +1000, Nick Piggin wrote:
> Ingo Molnar wrote:
> > especially on NUMA, if the migration-target CPU (this_cpu) is not at
> > least partially idle, i'd be quite uneasy to passive balance from
> > another node. I suspect this needs numbers from Martin and John?
>
> Passive balancing cuts in only when an imbalance is becoming apparent.
> If the queue gets more imbalanced, periodic balancing will cut in,
> and that is much worse than wake balancing.
Another point to note about the current wake balance. Imbalance calculation
is not taking the complete load of the sched group into account. I think
there might be scenario's where the current wake balance will actually
result in some imbalances corrected later by periodic balancing.
thanks,
suresh
^ permalink raw reply
* Kernel complaining, "eth0: Too much work in interrupt, status 8401"
From: rolf liu @ 2005-08-01 17:16 UTC (permalink / raw)
To: linux-mips; +Cc: rolf liu
I am running linux 2.6.12 on db1550. It seems there are no many
network traffic except a few ssh sessions. Now kernel often complains
"eth0: Too much work in interrupt, status 8401".
thanks
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.