* Re: iptables u32 match code for review/testing/...
From: Harald Welte @ 2003-01-08 10:56 UTC (permalink / raw)
To: Don Cohen; +Cc: netfilter-devel
In-Reply-To: <15899.51201.381520.438520@isis.cs3-inc.com>
[-- Attachment #1: Type: text/plain, Size: 3679 bytes --]
On Tue, Jan 07, 2003 at 10:41:05PM -0800, Don Cohen wrote:
> Harald Welte writes (two separate msgs):
> > /* *** What's this about?
> > Must fit inside union ipt_matchinfo: 16 bytes */
> What do you mean by this?
>
> That was a comment I found in one of the other match modules
> (which I used as a template for this one).
> I didn't understand it so I thought I better keep it and flag it.
> If you don't know what it's about I guess it's safe to discard it.
Hm. A recursive grep through the kernel doesn't find any occurrance of
'ipt_matchinfo' at all.
However, most userspace iptables plugins still contain a comment
referring to union ipt_matchinfo. I think this is a remnant of the very
early days of iptables [which I have missed]. I think it's safe to
forget about it.
> > /* *** any way to allow for an arbitrary number of elements?
> > for now I settle for a limit of 10 of each */
> no way. At least not with the current kernel/userspace interface :(
> Ok, then I'll leave it at 10x10x10 (perhaps a lot of overhead for
> a single match?)
It also means that every single rule containing the u32 match will
occupy smp_num_cpus*1000*sizeof(your structure) bytes of non-swappable
kernel memory.
> > I like the content (code/implementation/idea of having u32).
> > The only issue is that it doesn't really fit into the current iptables
> > architecture. Why?
> > - because it is a whole classification engine on it's own
> Why is this bad? I wrote it to do things I wanted to do but didn't
> see how. I think that's good. If it subsumes a few others that are
> out there, even better. (But it's almost certainly a lot slower than
> any more specialized match, so they're still useful.)
Sorry, I didn't make myself clear. if u32 is used the right way, it is
way better than lots of the static matches within iptables. However, it
is more like a replacement of the whole iptables packet matching engine,
than a plugin/extension to it. Making it a plugin/extension will
unfortunately become a sort-of clumsy approach. I don't blame or
critisize you... this is not an issue of implementation, but a
fundamental architectural problem.
> > - because it has an arbitrary [variable] amount of match data
> At the moment, a large fixed amount. I regard that as a fault of
> current iptables, though.
I totally agree. I said "it doesn't really fit into the current
iptables architecture".
> > > Was the indentation a problem? The tabs were all 8 spaces, but
> > > perhaps you want wider indentation?
> > no, but look at the structure definitions in your header file.
> Oops. The "no" above suggests that you don't mind the narrow
> indentation, in which case not only the .h file but the earlier
> versions of the .c files were ok except for the few misplaced }'s.
I really should work on the precision of my language, it seems.
the indentation was a problem, yes. no, I don't want wider indentation
than 8.
> But if you do want wide indentation (and don't mind >80 cols)
> then here you go:
yes. If you now would be as friendly to post it as a unified diff
against current patch-o-matic CVS, attached in MIME format? (And for
posting habits and/or coding style hints there are plenty of examples in
the list archives respectively CVS).
Thanks again.
--
- Harald Welte / laforge@gnumonks.org http://www.gnumonks.org/
============================================================================
"If this were a dictatorship, it'd be a heck of a lot easier, just so long
as I'm the dictator." -- George W. Bush Dec 18, 2000
[-- Attachment #2: Type: application/pgp-signature, Size: 232 bytes --]
^ permalink raw reply
* [patch] video-buf.c update
From: Gerd Knorr @ 2003-01-08 11:14 UTC (permalink / raw)
To: Linus Torvalds, Michael Hunold, Kernel List
Hi,
This patch updates the video-buf helper module. It changes the field
handling a bit and adds code do deal better with alternating field
capture (= capture even and odd fields to separate video buffers).
Please apply,
Gerd
--- linux-2.5.54/drivers/media/video/video-buf.c 2003-01-08 10:34:29.000000000 +0100
+++ linux/drivers/media/video/video-buf.c 2003-01-08 10:59:58.000000000 +0100
@@ -339,6 +339,7 @@
struct pci_dev *pci,
spinlock_t *irqlock,
enum v4l2_buf_type type,
+ enum v4l2_field field,
int msize)
{
memset(q,0,sizeof(*q));
@@ -346,6 +347,7 @@
q->irqlock = irqlock;
q->pci = pci;
q->type = type;
+ q->field = field;
q->msize = msize;
q->ops = ops;
@@ -406,6 +408,25 @@
/* --------------------------------------------------------------------- */
+enum v4l2_field
+videobuf_next_field(struct videobuf_queue *q)
+{
+ enum v4l2_field field = q->field;
+
+ BUG_ON(V4L2_FIELD_ANY == field);
+
+ if (V4L2_FIELD_ALTERNATE == field) {
+ if (V4L2_FIELD_TOP == q->last) {
+ field = V4L2_FIELD_TOP;
+ q->last = V4L2_FIELD_TOP;
+ } else {
+ field = V4L2_FIELD_BOTTOM;
+ q->last = V4L2_FIELD_BOTTOM;
+ }
+ }
+ return field;
+}
+
void
videobuf_status(struct v4l2_buffer *b, struct videobuf_buffer *vb,
enum v4l2_buf_type type)
@@ -486,6 +507,7 @@
struct v4l2_buffer *b)
{
struct videobuf_buffer *buf;
+ enum v4l2_field field;
unsigned long flags;
int retval;
@@ -507,7 +529,8 @@
buf->state == STATE_ACTIVE)
goto done;
- retval = q->ops->buf_prepare(file,buf);
+ field = videobuf_next_field(q);
+ retval = q->ops->buf_prepare(file,buf,field);
if (0 != retval)
goto done;
@@ -613,6 +636,8 @@
videobuf_read_zerocopy(struct file *file, struct videobuf_queue *q,
char *data, size_t count, loff_t *ppos)
{
+ enum v4l2_field field;
+ unsigned long flags;
int retval;
/* setup stuff */
@@ -623,12 +648,15 @@
q->read_buf->baddr = (unsigned long)data;
q->read_buf->bsize = count;
- retval = q->ops->buf_prepare(file,q->read_buf);
+ field = videobuf_next_field(q);
+ retval = q->ops->buf_prepare(file,q->read_buf,field);
if (0 != retval)
goto done;
/* start capture & wait */
+ spin_lock_irqsave(q->irqlock,flags);
q->ops->buf_queue(file,q->read_buf);
+ spin_unlock_irqrestore(q->irqlock,flags);
retval = videobuf_waiton(q->read_buf,0,0);
if (0 == retval) {
videobuf_dma_pci_sync(q->pci,&q->read_buf->dma);
@@ -646,6 +674,8 @@
ssize_t videobuf_read_one(struct file *file, struct videobuf_queue *q,
char *data, size_t count, loff_t *ppos)
{
+ enum v4l2_field field;
+ unsigned long flags;
int retval, bytes, size, nbufs;
down(&q->lock);
@@ -668,10 +698,13 @@
q->read_buf = videobuf_alloc(q->msize);
if (NULL == q->read_buf)
goto done;
- retval = q->ops->buf_prepare(file,q->read_buf);
+ field = videobuf_next_field(q);
+ retval = q->ops->buf_prepare(file,q->read_buf,field);
if (0 != retval)
goto done;
+ spin_lock_irqsave(q->irqlock,flags);
q->ops->buf_queue(file,q->read_buf);
+ spin_unlock_irqrestore(q->irqlock,flags);
q->read_off = 0;
}
@@ -705,6 +738,7 @@
int videobuf_read_start(struct file *file, struct videobuf_queue *q)
{
+ enum v4l2_field field;
unsigned long flags;
int count = 0, size = 0;
int err, i;
@@ -720,7 +754,8 @@
if (err)
return err;
for (i = 0; i < count; i++) {
- err = q->ops->buf_prepare(file,q->bufs[i]);
+ field = videobuf_next_field(q);
+ err = q->ops->buf_prepare(file,q->bufs[i],field);
if (err)
return err;
list_add_tail(&q->bufs[i]->stream, &q->stream);
@@ -793,6 +828,7 @@
fc = (unsigned int*)q->read_buf->dma.vmalloc;
fc += (q->read_buf->size>>2) -1;
*fc = q->read_buf->field_count >> 1;
+ dprintk(1,"vbihack: %d\n",*fc);
}
/* copy stuff */
--- linux-2.5.54/drivers/media/video/video-buf.h 2003-01-08 10:34:32.000000000 +0100
+++ linux/drivers/media/video/video-buf.h 2003-01-08 10:59:58.000000000 +0100
@@ -154,7 +154,8 @@
struct videobuf_queue_ops {
int (*buf_setup)(struct file *file, int *count, int *size);
- int (*buf_prepare)(struct file *file,struct videobuf_buffer *vb);
+ int (*buf_prepare)(struct file *file,struct videobuf_buffer *vb,
+ enum v4l2_field field);
void (*buf_queue)(struct file *file,struct videobuf_buffer *vb);
void (*buf_release)(struct file *file,struct videobuf_buffer *vb);
};
@@ -166,6 +167,8 @@
enum v4l2_buf_type type;
int msize;
+ enum v4l2_field field;
+ enum v4l2_field last; /* for field=V4L2_FIELD_ALTERNATE */
struct videobuf_buffer *bufs[VIDEO_MAX_FRAME];
struct videobuf_queue_ops *ops;
@@ -186,7 +189,8 @@
void videobuf_queue_init(struct videobuf_queue *q,
struct videobuf_queue_ops *ops,
struct pci_dev *pci, spinlock_t *irqlock,
- enum v4l2_buf_type type, int msize);
+ enum v4l2_buf_type type,
+ enum v4l2_field field, int msize);
int videobuf_queue_is_busy(struct videobuf_queue *q);
void videobuf_queue_cancel(struct file *file, struct videobuf_queue *q);
--
Weil die späten Diskussionen nicht mal mehr den Rotwein lohnen.
-- Wacholder in "Melanie"
^ permalink raw reply
* Re: [PATCH] __copy_from_user() can sleep in sscape.c
From: Takashi Iwai @ 2003-01-08 10:54 UTC (permalink / raw)
To: Chris Rankin; +Cc: alsa-devel
In-Reply-To: <200212310049.gBV0nC7n017166@twopit.underworld>
At Tue, 31 Dec 2002 00:49:12 +0000 (GMT),
Chris Rankin wrote:
>
> Hi,
>
> It has come to my attention that __copy_from_user() is allowed to
> sleep, which means that a driver can't be holding any spinlocks at the
> time. This is a patch for the SoundScape driver.
thanks, applied to cvs now.
ciao,
Takashi
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
^ permalink raw reply
* Re: [PATCH][FBDEV]: fb_putcs() and fb_setfont() methods
From: Geert Uytterhoeven @ 2003-01-08 10:47 UTC (permalink / raw)
To: James Simmons
Cc: Petr Vandrovec, Antonino Daplas, Linux Fbdev development list,
Linux Kernel List
In-Reply-To: <Pine.LNX.4.44.0301072147070.17129-100000@phoenix.infradead.org>
On Tue, 7 Jan 2003, James Simmons wrote:
> > Why? (a) only those which will use putcs, and (b) I see no 512 chars limit
> > anywhere in new code. And in old code it is there only because of passed
> > data are only 16bit, not 32bit wide... With simple search&replace you can
> > extend it to any size you want, as long as you'll not use sparse font
> > bitmap.
>
> The current "core" console code screen_buf layout is designed after VGA
> text mode. 16 bits which only 8 bits are used to represent a character, 9
> if you have high_fonts flag set. The other 8,7 bits are for attributes.
> This is very limiting and it does effect fbcon.c :-( I like to the console
> system remove these awful limitation in the future. This why I like to see
> fbdev drivers avoid touching strings from the console layer.
Please note that Tony's new accel_putcs() code uses __u32 to pass the character
indices. So it's not limited to 256/512 characters per font. Fonts can be as
large as you want. Sparse fonts can be handled as well, if accel_putcs() takes
care of the conversion from sparse character indices to dense character
indices.
His code can be viewed as a way to do multiple monochrome to color expansions
with one single call, using a predefined table of patterns. Quite generic,
unless you want to have multi-color fonts later :-)
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
^ permalink raw reply
* Re: Re: rotation.
From: Sven Luther @ 2003-01-08 10:48 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: James Simmons, Linux Fbdev development list,
Linux Kernel Mailing List
In-Reply-To: <Pine.GSO.4.21.0301081120540.21171-100000@vervain.sonytel.be>
On Wed, Jan 08, 2003 at 11:24:22AM +0100, Geert Uytterhoeven wrote:
> On Tue, 7 Jan 2003, James Simmons wrote:
> > I'm about to implement rotation which is needed for devices like the ipaq.
> > The question is do we flip the xres and yres values depending on the
> > rotation or do we just alter the data that will be drawn to make the
> > screen appear to rotate. How does hardware rotate view the x and y axis?
> > Are they rotated or does just the data get rotated?
>
> Where are you going to implement the rotation? At the fbcon or fbdev level?
>
> Fbcon has the advantage that it'll work for all frame buffer devices.
But you could also provide driver hooks for the chips which have such a
rotation feature included (don't know if such exist, but i suppose they
do, or may in the future).
So, we also support fbcon for not left to righ locales ?
Friendly,
Sven Luther
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
^ permalink raw reply
* [resent patch] add tda9887 module
From: Gerd Knorr @ 2003-01-08 11:06 UTC (permalink / raw)
To: Linus Torvalds, Kernel List
Hi,
This patch adds the tda9887 i2c module to the linux kernel. This one
is needed for some TV cards. The patch also adds the missing #define
to audiochip.h which currently breaks the bttv build.
Please apply,
Gerd
--- linux-2.5.54/drivers/media/video/Makefile 2003-01-08 10:34:21.000000000 +0100
+++ linux/drivers/media/video/Makefile 2003-01-08 10:59:58.000000000 +0100
@@ -15,7 +15,7 @@
obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-common.o
obj-$(CONFIG_VIDEO_BT848) += bttv.o msp3400.o tvaudio.o \
- tda7432.o tda9875.o tuner.o video-buf.o
+ tda7432.o tda9875.o tuner.o video-buf.o tda9887.o
obj-$(CONFIG_SOUND_TVMIXER) += tvmixer.o
obj-$(CONFIG_VIDEO_ZR36120) += zoran.o
--- linux-2.5.54/drivers/media/video/audiochip.h 2003-01-08 10:34:03.000000000 +0100
+++ linux/drivers/media/video/audiochip.h 2003-01-08 10:59:58.000000000 +0100
@@ -67,4 +67,8 @@
#define AUDC_SWITCH_MUTE _IO('m',16) /* turn on mute */
#endif
+
+/* misc stuff to pass around config info to i2c chips */
+#define AUDC_CONFIG_PINNACLE _IOW('m',32,int)
+
#endif /* AUDIOCHIP_H */
--- linux-2.5.54/drivers/media/video/tda9887.c 2003-01-08 10:59:58.000000000 +0100
+++ linux/drivers/media/video/tda9887.c 2003-01-08 10:59:58.000000000 +0100
@@ -0,0 +1,493 @@
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/i2c.h>
+#include <linux/types.h>
+#include <linux/videodev.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/slab.h>
+
+#include "id.h"
+#include "audiochip.h"
+
+/* Chips:
+ TDA9885 (PAL, NTSC)
+ TDA9886 (PAL, SECAM, NTSC)
+ TDA9887 (PAL, SECAM, NTSC, FM Radio)
+
+ found on:
+ - Pinnacle PCTV (Jul.2002 Version with MT2032, bttv)
+ TDA9887 (world), TDA9885 (USA)
+ Note: OP2 of tda988x must be set to 1, else MT2032 is disabled!
+ - KNC One TV-Station RDS (saa7134)
+*/
+
+
+/* Addresses to scan */
+static unsigned short normal_i2c[] = {I2C_CLIENT_END};
+static unsigned short normal_i2c_range[] = {0x86>>1,0x86>>1,I2C_CLIENT_END};
+static unsigned short probe[2] = { I2C_CLIENT_END, I2C_CLIENT_END };
+static unsigned short probe_range[2] = { I2C_CLIENT_END, I2C_CLIENT_END };
+static unsigned short ignore[2] = { I2C_CLIENT_END, I2C_CLIENT_END };
+static unsigned short ignore_range[2] = { I2C_CLIENT_END, I2C_CLIENT_END };
+static unsigned short force[2] = { I2C_CLIENT_END, I2C_CLIENT_END };
+static struct i2c_client_address_data addr_data = {
+ normal_i2c, normal_i2c_range,
+ probe, probe_range,
+ ignore, ignore_range,
+ force
+};
+
+/* insmod options */
+static int debug = 0;
+static char *pal = "b";
+static char *secam = "l";
+MODULE_PARM(debug,"i");
+MODULE_PARM(pal,"s");
+MODULE_PARM(secam,"s");
+MODULE_LICENSE("GPL");
+
+/* ---------------------------------------------------------------------- */
+
+#define dprintk if (debug) printk
+
+struct tda9887 {
+ struct i2c_client client;
+ int radio,tvnorm;
+ int pinnacle_id;
+};
+
+static struct i2c_driver driver;
+static struct i2c_client client_template;
+
+/* ---------------------------------------------------------------------- */
+
+//
+// TDA defines
+//
+
+//// first reg
+#define cVideoTrapBypassOFF 0x00 // bit b0
+#define cVideoTrapBypassON 0x01 // bit b0
+
+#define cAutoMuteFmInactive 0x00 // bit b1
+#define cAutoMuteFmActive 0x02 // bit b1
+
+#define cIntercarrier 0x00 // bit b2
+#define cQSS 0x04 // bit b2
+
+#define cPositiveAmTV 0x00 // bit b3:4
+#define cFmRadio 0x08 // bit b3:4
+#define cNegativeFmTV 0x10 // bit b3:4
+
+
+#define cForcedMuteAudioON 0x20 // bit b5
+#define cForcedMuteAudioOFF 0x00 // bit b5
+
+#define cOutputPort1Active 0x00 // bit b6
+#define cOutputPort1Inactive 0x40 // bit b6
+
+#define cOutputPort2Active 0x00 // bit b7
+#define cOutputPort2Inactive 0x80 // bit b7
+
+
+//// second reg
+#define cDeemphasisOFF 0x00 // bit c5
+#define cDeemphasisON 0x20 // bit c5
+
+#define cDeemphasis75 0x00 // bit c6
+#define cDeemphasis50 0x40 // bit c6
+
+#define cAudioGain0 0x00 // bit c7
+#define cAudioGain6 0x80 // bit c7
+
+
+//// third reg
+#define cAudioIF_4_5 0x00 // bit e0:1
+#define cAudioIF_5_5 0x01 // bit e0:1
+#define cAudioIF_6_0 0x02 // bit e0:1
+#define cAudioIF_6_5 0x03 // bit e0:1
+
+
+#define cVideoIF_58_75 0x00 // bit e2:4
+#define cVideoIF_45_75 0x04 // bit e2:4
+#define cVideoIF_38_90 0x08 // bit e2:4
+#define cVideoIF_38_00 0x0C // bit e2:4
+#define cVideoIF_33_90 0x10 // bit e2:4
+#define cVideoIF_33_40 0x14 // bit e2:4
+#define cRadioIF_45_75 0x18 // bit e2:4
+#define cRadioIF_38_90 0x1C // bit e2:4
+
+
+#define cTunerGainNormal 0x00 // bit e5
+#define cTunerGainLow 0x20 // bit e5
+
+#define cGating_18 0x00 // bit e6
+#define cGating_36 0x40 // bit e6
+
+#define cAgcOutON 0x80 // bit e7
+#define cAgcOutOFF 0x00 // bit e7
+
+static int tda9887_miro(struct tda9887 *t)
+{
+ int rc;
+ u8 bData[4] = { 0 };
+ u8 bVideoIF = 0;
+ u8 bAudioIF = 0;
+ u8 bDeEmphasis = 0;
+ u8 bDeEmphVal = 0;
+ u8 bModulation = 0;
+ u8 bCarrierMode = 0;
+ u8 bOutPort1 = cOutputPort1Inactive;
+#if 0
+ u8 bOutPort2 = cOutputPort2Inactive & mbTADState; // store i2c tuner state
+#else
+ u8 bOutPort2 = cOutputPort2Inactive;
+#endif
+ u8 bVideoTrap = cVideoTrapBypassOFF;
+#if 0
+ u8 bTopAdjust = mbAGC;
+#else
+ u8 bTopAdjust = 0;
+#endif
+
+#if 0
+ if (mParams.fVideoTrap)
+ bVideoTrap = cVideoTrapBypassON;
+#endif
+
+ if (t->radio) {
+ bVideoTrap = cVideoTrapBypassOFF;
+ bCarrierMode = cQSS;
+ bModulation = cFmRadio;
+ bOutPort1 = cOutputPort1Inactive;
+ bDeEmphasis = cDeemphasisON;
+ if (3 == t->pinnacle_id) {
+ /* ntsc */
+ bDeEmphVal = cDeemphasis75;
+ bAudioIF = cAudioIF_4_5;
+ bVideoIF = cRadioIF_45_75;
+ } else {
+ /* pal */
+ bAudioIF = cAudioIF_5_5;
+ bVideoIF = cRadioIF_38_90;
+ bDeEmphVal = cDeemphasis50;
+ }
+
+ } else if (t->tvnorm == VIDEO_MODE_PAL) {
+ bDeEmphasis = cDeemphasisON;
+ bDeEmphVal = cDeemphasis50;
+ bModulation = cNegativeFmTV;
+ bOutPort1 = cOutputPort1Inactive;
+ if (1 == t->pinnacle_id) {
+ bCarrierMode = cIntercarrier;
+ } else {
+ // stereo boards
+ bCarrierMode = cQSS;
+ }
+ switch (pal[0]) {
+ case 'b':
+ case 'g':
+ case 'h':
+ bVideoIF = cVideoIF_38_90;
+ bAudioIF = cAudioIF_5_5;
+ break;
+ case 'd':
+ bVideoIF = cVideoIF_38_00;
+ bAudioIF = cAudioIF_6_5;
+ break;
+ case 'i':
+ bVideoIF = cVideoIF_38_90;
+ bAudioIF = cAudioIF_6_0;
+ break;
+ case 'm':
+ case 'n':
+ bVideoIF = cVideoIF_45_75;
+ bAudioIF = cAudioIF_4_5;
+ bDeEmphVal = cDeemphasis75;
+ if ((5 == t->pinnacle_id) || (6 == t->pinnacle_id)) {
+ bCarrierMode = cIntercarrier;
+ } else {
+ bCarrierMode = cQSS;
+ }
+ break;
+ }
+
+ } else if (t->tvnorm == VIDEO_MODE_SECAM) {
+ bAudioIF = cAudioIF_6_5;
+ bDeEmphasis = cDeemphasisON;
+ bDeEmphVal = cDeemphasis50;
+ bModulation = cNegativeFmTV;
+ bCarrierMode = cQSS;
+ bOutPort1 = cOutputPort1Inactive;
+ switch (secam[0]) {
+ case 'd':
+ bVideoIF = cVideoIF_38_00;
+ break;
+ case 'k':
+ bVideoIF = cVideoIF_38_90;
+ break;
+ case 'l':
+ bVideoIF = cVideoIF_38_90;
+ bDeEmphasis = cDeemphasisOFF;
+ bDeEmphVal = cDeemphasis75;
+ bModulation = cPositiveAmTV;
+ break;
+ case 'L' /* L1 */:
+ bVideoIF = cVideoIF_33_90;
+ bDeEmphasis = cDeemphasisOFF;
+ bDeEmphVal = cDeemphasis75;
+ bModulation = cPositiveAmTV;
+ break;
+ }
+
+ } else if (t->tvnorm == VIDEO_MODE_NTSC) {
+ bVideoIF = cVideoIF_45_75;
+ bAudioIF = cAudioIF_4_5;
+ bDeEmphasis = cDeemphasisON;
+ bDeEmphVal = cDeemphasis75;
+ bModulation = cNegativeFmTV;
+ bOutPort1 = cOutputPort1Inactive;
+ if ((5 == t->pinnacle_id) || (6 == t->pinnacle_id)) {
+ bCarrierMode = cIntercarrier;
+ } else {
+ bCarrierMode = cQSS;
+ }
+ }
+
+ bData[1] = bVideoTrap | // B0: video trap bypass
+ cAutoMuteFmInactive | // B1: auto mute
+ bCarrierMode | // B2: InterCarrier for PAL else QSS
+ bModulation | // B3 - B4: positive AM TV for SECAM only
+ cForcedMuteAudioOFF | // B5: forced Audio Mute (off)
+ bOutPort1 | // B6: Out Port 1
+ bOutPort2; // B7: Out Port 2
+ bData[2] = bTopAdjust | // C0 - C4: Top Adjust 0 == -16dB 31 == 15dB
+ bDeEmphasis | // C5: De-emphasis on/off
+ bDeEmphVal | // C6: De-emphasis 50/75 microsec
+ cAudioGain0; // C7: normal audio gain
+ bData[3] = bAudioIF | // E0 - E1: Sound IF
+ bVideoIF | // E2 - E4: Video IF
+ cTunerGainNormal | // E5: Tuner gain (normal)
+ cGating_18 | // E6: Gating (18%)
+ cAgcOutOFF; // E7: VAGC (off)
+
+ dprintk("tda9885/6/7: 0x%02x 0x%02x 0x%02x [pinnacle_id=%d]\n",
+ bData[1],bData[2],bData[3],t->pinnacle_id);
+ if (4 != (rc = i2c_master_send(&t->client,bData,4)))
+ printk("tda9885/6/7: i2c i/o error: rc == %d (should be 4)\n",rc);
+ return 0;
+}
+
+/* ---------------------------------------------------------------------- */
+
+#if 0
+/* just for reference: old knc-one saa7134 stuff */
+static unsigned char buf_pal_bg[] = { 0x00, 0x16, 0x70, 0x49 };
+static unsigned char buf_pal_i[] = { 0x00, 0x16, 0x70, 0x4a };
+static unsigned char buf_pal_dk[] = { 0x00, 0x16, 0x70, 0x4b };
+static unsigned char buf_pal_l[] = { 0x00, 0x06, 0x50, 0x4b };
+static unsigned char buf_fm_stereo[] = { 0x00, 0x0e, 0x0d, 0x77 };
+#endif
+
+static unsigned char buf_pal_bg[] = { 0x00, 0x96, 0x70, 0x49 };
+static unsigned char buf_pal_i[] = { 0x00, 0x96, 0x70, 0x4a };
+static unsigned char buf_pal_dk[] = { 0x00, 0x96, 0x70, 0x4b };
+static unsigned char buf_pal_l[] = { 0x00, 0x86, 0x50, 0x4b };
+static unsigned char buf_fm_stereo[] = { 0x00, 0x8e, 0x0d, 0x77 };
+static unsigned char buf_ntsc[] = { 0x00, 0x96, 0x70, 0x44 };
+static unsigned char buf_ntsc_jp[] = { 0x00, 0x96, 0x70, 0x40 };
+
+static int tda9887_configure(struct tda9887 *t)
+{
+ unsigned char *buf = NULL;
+ int rc;
+
+ printk("tda9887_configure\n");
+
+ if (t->radio) {
+ dprintk("tda9885/6/7: FM Radio mode\n");
+ buf = buf_fm_stereo;
+
+ } else if (t->tvnorm == VIDEO_MODE_PAL) {
+ dprintk("tda9885/6/7: PAL-%c mode\n",pal[0]);
+ switch (pal[0]) {
+ case 'b':
+ case 'g':
+ buf = buf_pal_bg;
+ break;
+ case 'i':
+ buf = buf_pal_i;
+ break;
+ case 'd':
+ case 'k':
+ buf = buf_pal_dk;
+ break;
+ case 'l':
+ buf = buf_pal_l;
+ break;
+ }
+
+ } else if (t->tvnorm == VIDEO_MODE_NTSC) {
+ dprintk("tda9885/6/7: NTSC mode\n");
+ buf = buf_ntsc;
+
+ } else if (t->tvnorm == VIDEO_MODE_SECAM) {
+ dprintk("tda9885/6/7: SECAM mode\n");
+ buf = buf_pal_l;
+
+ } else if (t->tvnorm == 6 /* BTTV hack */) {
+ dprintk("tda9885/6/7: NTSC-Japan mode\n");
+ buf = buf_ntsc_jp;
+ }
+
+ if (NULL == buf) {
+ printk("tda9885/6/7 unknown norm=%d\n",t->tvnorm);
+ return 0;
+ }
+
+ dprintk("tda9885/6/7: 0x%02x 0x%02x 0x%02x\n",
+ buf[1],buf[2],buf[3]);
+ if (4 != (rc = i2c_master_send(&t->client,buf,4)))
+ printk("tda9885/6/7: i2c i/o error: rc == %d (should be 4)\n",rc);
+ return 0;
+}
+
+/* ---------------------------------------------------------------------- */
+
+static int tda9887_attach(struct i2c_adapter *adap, int addr,
+ unsigned short flags, int kind)
+{
+ struct tda9887 *t;
+
+ client_template.adapter = adap;
+ client_template.addr = addr;
+
+ printk("tda9887: chip found @ 0x%x\n", addr<<1);
+
+ if (NULL == (t = kmalloc(sizeof(*t), GFP_KERNEL)))
+ return -ENOMEM;
+ memset(t,0,sizeof(*t));
+ t->client = client_template;
+ t->client.data = t;
+ t->pinnacle_id = -1;
+ i2c_attach_client(&t->client);
+
+ MOD_INC_USE_COUNT;
+ return 0;
+}
+
+static int tda9887_probe(struct i2c_adapter *adap)
+{
+ int rc;
+
+ switch (adap->id) {
+ case I2C_ALGO_BIT | I2C_HW_B_BT848:
+ case I2C_ALGO_BIT | I2C_HW_B_RIVA:
+ case I2C_ALGO_SAA7134:
+ printk("tda9887: probing %s i2c adapter [id=0x%x]\n",
+ adap->name,adap->id);
+ rc = i2c_probe(adap, &addr_data, tda9887_attach);
+ break;
+ default:
+ printk("tda9887: ignoring %s i2c adapter [id=0x%x]\n",
+ adap->name,adap->id);
+ rc = 0;
+ /* nothing */
+ }
+ return rc;
+}
+
+static int tda9887_detach(struct i2c_client *client)
+{
+ struct tda9887 *t = (struct tda9887*)client->data;
+
+ i2c_detach_client(client);
+ kfree(t);
+ MOD_DEC_USE_COUNT;
+ return 0;
+}
+
+static int
+tda9887_command(struct i2c_client *client, unsigned int cmd, void *arg)
+{
+ struct tda9887 *t = (struct tda9887*)client->data;
+
+ switch (cmd) {
+
+ /* --- configuration --- */
+ case AUDC_SET_RADIO:
+ t->radio = 1;
+ if (-1 != t->pinnacle_id)
+ tda9887_miro(t);
+ else
+ tda9887_configure(t);
+ break;
+
+ case AUDC_CONFIG_PINNACLE:
+ {
+ int *i = arg;
+
+ t->pinnacle_id = *i;
+ break;
+ }
+ /* --- v4l ioctls --- */
+ /* take care: bttv does userspace copying, we'll get a
+ kernel pointer here... */
+ case VIDIOCSCHAN:
+ {
+ struct video_channel *vc = arg;
+
+ t->radio = 0;
+ t->tvnorm = vc->norm;
+ if (-1 != t->pinnacle_id)
+ tda9887_miro(t);
+ else
+ tda9887_configure(t);
+ break;
+ }
+ default:
+ /* nothing */
+ break;
+ }
+ return 0;
+}
+
+/* ----------------------------------------------------------------------- */
+
+static struct i2c_driver driver = {
+ name: "i2c tda9887 driver",
+ id: -1, /* FIXME */
+ flags: I2C_DF_NOTIFY,
+ attach_adapter: tda9887_probe,
+ detach_client: tda9887_detach,
+ command: tda9887_command,
+};
+static struct i2c_client client_template =
+{
+ name: "tda9887",
+ flags: I2C_CLIENT_ALLOW_USE,
+ driver: &driver,
+};
+
+static int tda9887_init_module(void)
+{
+ i2c_add_driver(&driver);
+ return 0;
+}
+
+static void tda9887_cleanup_module(void)
+{
+ i2c_del_driver(&driver);
+}
+
+module_init(tda9887_init_module);
+module_exit(tda9887_cleanup_module);
+
+/*
+ * Overrides for Emacs so that we follow Linus's tabbing style.
+ * ---------------------------------------------------------------------------
+ * Local variables:
+ * c-basic-offset: 8
+ * End:
+ */
--
Weil die späten Diskussionen nicht mal mehr den Rotwein lohnen.
-- Wacholder in "Melanie"
^ permalink raw reply
* Re: [LARTC] Incomprehensive problem with tc filter & mangle...
From: Ronan LAVIEC @ 2003-01-08 10:50 UTC (permalink / raw)
To: lartc
In-Reply-To: <marc-lartc-104197594226744@msgid-missing>
Stef > My mangle filter is working well, the problem is realy on tc filter
rules.
For example I have this now :
152K 6580K MARK all -- eth1 * 0.0.0.0/0 0.0.0.0/0
length 0:200 MARK set 0xa
1688 482K MARK all -- eth1 * 0.0.0.0/0
0.0.0.0/0 length 200:400 MARK set 0xf
23254 13M MARK all -- eth1 * 0.0.0.0/0
0.0.0.0/0 length 400:800 MARK set 0x14
169K 244M MARK all -- eth1 * 0.0.0.0/0
0.0.0.0/0 length 800:1500 MARK set 0x19
Victor > I'm not bridging anything, but I have compiled the option in the
kernel... Do you think it is the source of my problem ??
So what is the patch your are talking to ?
Oups, I forget to tell you about my config...
I have a 2.4.20 kernel to use htb rules (not patching), with the last
Iproute2 and the last htb3.6-020525 (for tc command).
I set to true these options in my kernel :
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
# CONFIG_NETLINK_DEV is not set
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
CONFIG_FILTER=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_FWMARK=y
CONFIG_IP_ROUTE_NAT=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_TOS=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_ROUTE_LARGE_TABLES=y
# CONFIG_IP_PNP is not set
CONFIG_NET_IPIP=y
CONFIG_NET_IPGRE=y
CONFIG_NET_IPGRE_BROADCAST=y
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_INET_ECN=y
CONFIG_SYN_COOKIES=y
#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=y
CONFIG_IP_NF_FTP=y
CONFIG_IP_NF_IRC=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_LIMIT=y
CONFIG_IP_NF_MATCH_MAC=y
CONFIG_IP_NF_MATCH_PKTTYPE=y
CONFIG_IP_NF_MATCH_MARK=y
CONFIG_IP_NF_MATCH_MULTIPORT=y
CONFIG_IP_NF_MATCH_TOS=y
CONFIG_IP_NF_MATCH_ECN=y
CONFIG_IP_NF_MATCH_DSCP=y
CONFIG_IP_NF_MATCH_AH_ESP=y
CONFIG_IP_NF_MATCH_LENGTH=y
CONFIG_IP_NF_MATCH_TTL=y
CONFIG_IP_NF_MATCH_TCPMSS=y
CONFIG_IP_NF_MATCH_HELPER=y
CONFIG_IP_NF_MATCH_STATE=y
CONFIG_IP_NF_MATCH_CONNTRACK=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_NAT_LOCAL=y
CONFIG_IP_NF_NAT_IRC=y
CONFIG_IP_NF_NAT_FTP=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_TOS=y
CONFIG_IP_NF_TARGET_ECN=y
CONFIG_IP_NF_TARGET_DSCP=y
CONFIG_IP_NF_TARGET_MARK=y
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y
CONFIG_IP_NF_TARGET_TCPMSS=y
CONFIG_IP_NF_ARPTABLES=y
CONFIG_IP_NF_ARPFILTER=y
# CONFIG_VLAN_8021Q is not set
# CONFIG_IPX is not set
#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=y
CONFIG_NET_SCH_HTB=y
CONFIG_NET_SCH_CSZ=y
CONFIG_NET_SCH_PRIO=y
CONFIG_NET_SCH_RED=y
CONFIG_NET_SCH_SFQ=y
CONFIG_NET_SCH_TEQL=y
CONFIG_NET_SCH_TBF=y
CONFIG_NET_SCH_GRED=y
CONFIG_NET_SCH_DSMARK=y
CONFIG_NET_SCH_INGRESS=y
CONFIG_NET_QOS=y
CONFIG_NET_ESTIMATOR=y
CONFIG_NET_CLS=y
CONFIG_NET_CLS_TCINDEX=y
CONFIG_NET_CLS_ROUTE4=y
CONFIG_NET_CLS_ROUTE=y
CONFIG_NET_CLS_FW=y
CONFIG_NET_CLS_U32=y
CONFIG_NET_CLS_RSVP=y
CONFIG_NET_CLS_RSVP6=y
CONFIG_NET_CLS_POLICE=y
I know that in my case not all is usefull, but as it is really new for me,
I've prefered to select all to true to not forget anything.
Is my wish responsible of my current problem ?
Ronan.
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply
* Re: Undelete files on ext3 ??
From: John Bradford @ 2003-01-08 10:57 UTC (permalink / raw)
To: Jan Hudec; +Cc: gmack, adilger, root, maxvaldez, bulb, linux-kernel
In-Reply-To: <20030108080005.GK2141@vagabond>
> > > > Therefore, it's time for somebody to put a 'dumpster` in all the Linux
> > > > file-systems. Somebody should then modify `rm` and the kernel unlink
> > > > to `mv' files to the dumpster directory on the file-system, instead of
> > > > really deleting them.
[snip discussion about a temporary directory for deleted files]
> Yes. But we could do better. Since no program uses the __syscall
> interface directly, wraping unlink in libc would affect all programs
> including rm. It could even be done withou recompiling anything using
> LD_PRELOAD.
I disagree. This is the wrong goal to be aiming for.
A temporary directory for deleted files can, and should be,
implemented in userspace.
What is much more interesting is the possibility of what I described
earlier in the thread as a virtual WORM device, and what Andreas
said could be done with LVM already using filesystem snapshots -
I.E. the ability to mount the filesystem as it was at any date and
time in the past.
However, as far as I can see, LVM snapshots are a manual process - the
user has to expressly create a snapshot when they want it.
What I was thinking of was a virtual device that allocated a new
sector whenever an old one was overwritten - kind of like a journaled
filesystem, but without the filesystem, (I.E. just the journal) :-).
John.
^ permalink raw reply
* [linux-lvm] Re: lvm question
From: AJ Lewis @ 2003-01-08 10:48 UTC (permalink / raw)
To: Timophey.Nazarov; +Cc: linux-lvm
In-Reply-To: <Pine.LNX.4.33.0301081907180.471-100000@epsilon.cs.karelia.ru>
[-- Attachment #1: Type: text/plain, Size: 1613 bytes --]
You really should match the version of your LVM module and tools. I suggest
you upgrade to LVM 1.0.6 for both the kernel driver and the tools. The
version mismatch is likely causing the segfault.
On Wed, Jan 08, 2003 at 07:27:22PM +0300, Timophey V. Nazarov wrote:
> Hello.
> Maybe it will be usefull for you.
> I use RedHat Linux 7.0, kernel 2.2.21 with lvm driver (v1.0.2) as loadable
> module, which has been compiled from ftp sources, and lvm software
> (v0.9.1_beta7), which has been got from ftp server in binary form.
> Now I cannot remove one VG by vgremove. I can pvcreate, vgcreate,
> lvcreate, [vg,lv]rename, vgreduce, etc. All but vgremove.
>
> When I try to vgremove it returns me "Segmentation fault" after
> "...initializing all physical volumes".
>
>
> A propos, in HOWTO at tLDP you said that initscripts RH Linux 7, 7.1 are
> able to work with LVM, but I use RH7 and I customized initscripts
> manually.
>
>
> Timophey
>
>
--
AJ Lewis
Sistina Software Inc. Voice: 612-638-0500
1313 5th St SE, Suite 111 E-Mail: lewis@sistina.com
Minneapolis, MN 55414
http://www.sistina.com
Current GPG fingerprint = FE77 4B43 6A9B F982 A731 02FA 2BF5 7574 294A AA5A
Grab the key at: http://people.sistina.com/~lewis/gpg.html or one of the
many keyservers out there...
-----Begin Obligatory Humorous Quote----------------------------------------
I have yet to meet a C compiler that is more friendly and easier to use
than eating soup with a knife.
-----End Obligatory Humorous Quote------------------------------------------
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Re: 2.5.54 - quota support
From: Jan Kara @ 2003-01-08 10:56 UTC (permalink / raw)
To: Lukas Hejtmanek; +Cc: Andrew Morton, linux-kernel
In-Reply-To: <20030108012133.GA725@mail.muni.cz>
> On Tue, Jan 07, 2003 at 05:40:28PM +0100, Jan Kara wrote:
> > Reporting 'No such device' was actually bug which was introduced some
> > time ago but nobody probably noticed it... It was introduce when quota
> > code was converted from device numbers to 'bdev' structures.
> > I also fixed one bug in quotaon() call however I'm not sure wheter it
> > could cause the freeze. Anyway patch is attached, try it and tell me
> > about the changes.
>
> Hmm, quotaon / with init=/bin/sh seems to work OK, quota accounting is made and
> repquota displays normal info.
OK, so one bug fixed.
> However with normal startup quotaon / still freezes :-(
:( So I'll search for more bugs...
> Btw, does anyone know why mount is failing for so long time while using with
> automount? Process mount is in uninterruptible sleep for more than 10 secs until
> reports no disc in cdrom. (the same for my usb camera when autofs try to mount
> it while it is not connected).
Honza
--
Jan Kara <jack@suse.cz>
SuSE CR Labs
^ permalink raw reply
* Re: [Linux-fbdev-devel] [PATCH][FBDEV]: fb_putcs() and fb_setfont() methods
From: Geert Uytterhoeven @ 2003-01-08 10:47 UTC (permalink / raw)
To: James Simmons
Cc: Petr Vandrovec, Antonino Daplas, Linux Fbdev development list,
Linux Kernel List
In-Reply-To: <Pine.LNX.4.44.0301072147070.17129-100000@phoenix.infradead.org>
On Tue, 7 Jan 2003, James Simmons wrote:
> > Why? (a) only those which will use putcs, and (b) I see no 512 chars limit
> > anywhere in new code. And in old code it is there only because of passed
> > data are only 16bit, not 32bit wide... With simple search&replace you can
> > extend it to any size you want, as long as you'll not use sparse font
> > bitmap.
>
> The current "core" console code screen_buf layout is designed after VGA
> text mode. 16 bits which only 8 bits are used to represent a character, 9
> if you have high_fonts flag set. The other 8,7 bits are for attributes.
> This is very limiting and it does effect fbcon.c :-( I like to the console
> system remove these awful limitation in the future. This why I like to see
> fbdev drivers avoid touching strings from the console layer.
Please note that Tony's new accel_putcs() code uses __u32 to pass the character
indices. So it's not limited to 256/512 characters per font. Fonts can be as
large as you want. Sparse fonts can be handled as well, if accel_putcs() takes
care of the conversion from sparse character indices to dense character
indices.
His code can be viewed as a way to do multiple monochrome to color expansions
with one single call, using a predefined table of patterns. Quite generic,
unless you want to have multi-color fonts later :-)
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply
* Re: [Linux-fbdev-devel] Re: rotation.
From: Sven Luther @ 2003-01-08 10:48 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: James Simmons, Linux Fbdev development list,
Linux Kernel Mailing List
In-Reply-To: <Pine.GSO.4.21.0301081120540.21171-100000@vervain.sonytel.be>
On Wed, Jan 08, 2003 at 11:24:22AM +0100, Geert Uytterhoeven wrote:
> On Tue, 7 Jan 2003, James Simmons wrote:
> > I'm about to implement rotation which is needed for devices like the ipaq.
> > The question is do we flip the xres and yres values depending on the
> > rotation or do we just alter the data that will be drawn to make the
> > screen appear to rotate. How does hardware rotate view the x and y axis?
> > Are they rotated or does just the data get rotated?
>
> Where are you going to implement the rotation? At the fbcon or fbdev level?
>
> Fbcon has the advantage that it'll work for all frame buffer devices.
But you could also provide driver hooks for the chips which have such a
rotation feature included (don't know if such exist, but i suppose they
do, or may in the future).
So, we also support fbcon for not left to righ locales ?
Friendly,
Sven Luther
^ permalink raw reply
* [PATCH][TRIVIAL] menuconfig color sanity
From: jeff gerard @ 2003-01-08 10:47 UTC (permalink / raw)
To: linux-kernel
hi,
using yellow and green text with a "white" background in menuconfig works all
right on console, but it looks like crap under xterm, rxvt, etc. no
matter whose fault that is, the trivial patch below makes things more
readable without any major change in appearance. applies to 2.4 and 2.5.
now you can stop wondering about support for "lug and play", "mateur radio",
and "elephony" in the linux kernel.
jeff
--- linux-2.5.52.orig/scripts/lxdialog/colors.h 2002-11-10 19:28:02.000000000 -0800
+++ linux-2.5.52/scripts/lxdialog/colors.h 2003-01-08 02:04:07.000000000 -0800
@@ -41 +41 @@
-#define TITLE_FG COLOR_YELLOW
+#define TITLE_FG COLOR_RED
@@ -93 +93 @@
-#define POSITION_INDICATOR_FG COLOR_YELLOW
+#define POSITION_INDICATOR_FG COLOR_RED
@@ -113 +113 @@
-#define TAG_FG COLOR_YELLOW
+#define TAG_FG COLOR_MAGENTA
@@ -121 +121 @@
-#define TAG_KEY_FG COLOR_YELLOW
+#define TAG_KEY_FG COLOR_MAGENTA
@@ -137 +137 @@
-#define UARROW_FG COLOR_GREEN
+#define UARROW_FG COLOR_RED
@@ -141 +141 @@
-#define DARROW_FG COLOR_GREEN
+#define DARROW_FG COLOR_RED
^ permalink raw reply
* Re: iptables u32 match code for review/testing/...
From: Roberto Nibali @ 2003-01-08 10:31 UTC (permalink / raw)
To: Don Cohen; +Cc: , Harald Welte, netfilter-devel
In-Reply-To: <15899.51201.381520.438520@isis.cs3-inc.com>
> > I like the content (code/implementation/idea of having u32).
> > The only issue is that it doesn't really fit into the current iptables
> > architecture. Why?
> > - because it is a whole classification engine on it's own
> Why is this bad? I wrote it to do things I wanted to do but didn't
> see how. I think that's good. If it subsumes a few others that are
> out there, even better. (But it's almost certainly a lot slower than
> any more specialized match, so they're still useful.)
What's wrong with: http://www.cyberus.ca/~hadi/patches/action/ ?
Why couldn't you use some of its code for the classification engine?
> But if you do want wide indentation (and don't mind >80 cols)
> then here you go:
Looks a lot nicer and ledgible to me but I'm not the one in position to
criticise coding style.
Best regards,
Roberto Nibali, ratz
--
echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq' | dc
^ permalink raw reply
* unexpected IO-APIC, please mail
From: Helge Hafting @ 2003-01-08 10:30 UTC (permalink / raw)
To: linux-smp
Linux 2.5.54 tells me this during boot:
WARNING: unexpected IO-APIC, please mail
to linux-smp@vger.kernel.org
so here's the message.
The machine is a uniprocessor P4, with a SiS chipset.
lspci:
00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device
0646
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] 5591/5592 AGP
00:02.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513 (rev
04)
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE]
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS]
SiS7012 PCI Audio Accelerator (rev a0)
00:03.0 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 0f)
00:03.1 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 0f)
00:03.2 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 0f)
00:03.3 USB Controller: Silicon Integrated Systems [SiS]: Unknown device
7002
00:0b.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado]
(rev 78)
00:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL-8139/8139C (rev 10)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon VE QY
dmesg:
Linux version 2.5.54 (helgehaf@hh) (gcc version 2.95.4 20011002 (Debian
prerelease)) #1 Thu Jan 2 11:07:11 CET 2003
Video mode to be used for restore is 31b
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 - 000000001fff3000 (ACPI NVS)
BIOS-e820: 000000001fff3000 - 0000000020000000 (ACPI data)
BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
511MB LOWMEM available.
found SMP MP-table at 000f5670
hm, page 000f5000 reserved twice.
hm, page 000f6000 reserved twice.
hm, page 000f1000 reserved twice.
hm, page 000f2000 reserved twice.
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
Intel MultiProcessor Specification v1.4
Virtual Wire compatibility mode.
OEM ID: OEM00000 Product ID: PROD00000000 APIC at: 0xFEE00000
Processor #0 15:2 APIC version 17
I/O APIC #2 Version 17 at 0xFEC00000.
Enabling APIC mode: Flat. Using 1 I/O APICs
Processors: 1
Building zonelist for node : 0
Kernel command line: auto BOOT_IMAGE=2.5.54 root=900 root=/dev/md0
Initializing CPU#0
Detected 2389.955 MHz processor.
Console: colour dummy device 80x25
Calibrating delay loop... 4718.59 BogoMIPS
Memory: 515120k/524224k available (1797k kernel code, 8356k reserved,
696k data, 308k init, 0k highmem)
Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
-> /dev
-> /dev/console
-> /root
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: After generic, caps: 3febfbff 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU#0: Intel P4/Xeon Extended MCE MSRs (12) available
CPU#0: Thermal monitoring enabled
Machine check exception polling timer started.
CPU: Intel(R) Pentium(R) 4 CPU 2.40GHz stepping 04
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
enabled ExtINT on CPU#0
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
ENABLING IO-APIC IRQs
Setting 2 in the phys_id_present_map
...changing IO-APIC physical APIC ID to 2 ... ok.
init IO_APIC IRQs
IO-APIC (apicid-pin) 2-0, 2-5, 2-9, 2-11, 2-17, 2-19 not connected.
..TIMER: vector=0x31 pin1=2 pin2=0
number of MP IRQ sources: 22.
number of IO-APIC #2 registers: 24.
testing the IO APIC.......................
IO APIC #2......
.... register #00: 02000000
....... : physical APIC id: 02
....... : Delivery Type: 0
....... : LTS : 0
.... register #01: 00178014
....... : max redirection entries: 0017
....... : PRQ implemented: 1
....... : IO APIC version: 0014
WARNING: unexpected IO-APIC, please mail
to linux-smp@vger.kernel.org
.... register #02: 02000000
....... : arbitration: 02
.... IRQ redirection table:
NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
00 000 00 1 0 0 0 0 0 0 00
01 001 01 0 0 0 0 0 1 1 39
02 001 01 0 0 0 0 0 1 1 31
03 001 01 0 0 0 0 0 1 1 41
04 001 01 0 0 0 0 0 1 1 49
05 000 00 1 0 0 0 0 0 0 00
06 001 01 0 0 0 0 0 1 1 51
07 001 01 0 0 0 0 0 1 1 59
08 001 01 0 0 0 0 0 1 1 61
09 000 00 1 0 0 0 0 0 0 00
0a 001 01 0 0 0 0 0 1 1 69
0b 000 00 1 0 0 0 0 0 0 00
0c 001 01 0 0 0 0 0 1 1 71
0d 001 01 0 0 0 0 0 1 1 79
0e 001 01 0 0 0 0 0 1 1 81
0f 001 01 0 0 0 0 0 1 1 89
10 001 01 1 1 0 1 0 1 1 91
11 000 00 1 0 0 0 0 0 0 00
12 001 01 1 1 0 1 0 1 1 99
13 000 00 1 0 0 0 0 0 0 00
14 001 01 1 1 0 1 0 1 1 A1
15 001 01 1 1 0 1 0 1 1 A9
16 001 01 1 1 0 1 0 1 1 B1
17 001 01 1 1 0 1 0 1 1 B9
IRQ to pin mappings:
IRQ0 -> 0:2
IRQ1 -> 0:1
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ10 -> 0:10
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
IRQ16 -> 0:16
IRQ18 -> 0:18
IRQ20 -> 0:20
IRQ21 -> 0:21
IRQ22 -> 0:22
IRQ23 -> 0:23
.................................... done.
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 2389.0953 MHz.
..... host bus clock speed is 132.0775 MHz.
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
mtrr: v2.0 (20020519)
device class 'cpu': registering
device class cpu: adding driver system:cpu
PCI: PCI BIOS revision 2.10 entry at 0xfb110, last bus=1
PCI: Using configuration type 1
device class cpu: adding device CPU 0
interfaces: adding device CPU 0
BIO: pool of 256 setup, 14Kb (56 bytes/bio)
biovec pool[0]: 1 bvecs: 256 entries (12 bytes)
biovec pool[1]: 4 bvecs: 256 entries (48 bytes)
biovec pool[2]: 16 bvecs: 256 entries (192 bytes)
biovec pool[3]: 64 bvecs: 256 entries (768 bytes)
biovec pool[4]: 128 bvecs: 256 entries (1536 bytes)
biovec pool[5]: 256 bvecs: 256 entries (3072 bytes)
block request queues:
128 requests per read queue
128 requests per write queue
8 requests per batch
enter congestion at 31
exit congestion at 33
drivers/usb/core/usb.c: registered new driver usbfs
drivers/usb/core/usb.c: registered new driver hub
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
PCI: Using IRQ router SIS [1039/0008] at 00:02.0
PCI->APIC IRQ transform: (B0,I2,P0) -> 18
PCI->APIC IRQ transform: (B0,I2,P2) -> 18
PCI->APIC IRQ transform: (B0,I3,P0) -> 20
PCI->APIC IRQ transform: (B0,I3,P1) -> 21
PCI->APIC IRQ transform: (B0,I3,P2) -> 22
PCI->APIC IRQ transform: (B0,I3,P3) -> 23
PCI->APIC IRQ transform: (B0,I11,P0) -> 18
PCI->APIC IRQ transform: (B0,I12,P0) -> 18
PCI->APIC IRQ transform: (B1,I0,P0) -> 16
IA-32 Microcode Update Driver: v1.11 <tigran@veritas.com>
Enabling SEP on CPU 0
Total HugeTLB memory allocated, 0
aio_setup: sizeof(struct page) = 40
devfs: v1.22 (20021013) Richard Gooch (rgooch@atnf.csiro.au)
The rest didn't seem APIC related. The machine seems to work fine,
but logs this complaint. I can test patches if necessary.
Helge Hafting
^ permalink raw reply
* Re: [linux-lvm] disk naming
From: Matt Schillinger @ 2003-01-08 10:28 UTC (permalink / raw)
To: linux-lvm
In-Reply-To: <20030104195544.GB11424@tykepenguin.com>
I have another scenario... If I have 1 volume setup
(/dev/test_vg/testlv1) and mounted on say, /mnt.
The disk is connected via scsi host channel 0, scsi id 4, and lun 0.
If i umount /mnt,
move the scsi disk to host channel 1,
Then run rescan-scsi-bus.sh 1, it should scan the scsi bus on host
channel 1, then find the scsi disk.
is there a way to make lvm see the new disk in a way that is mountable?
I have done the previous, but i see in /proc/lvm/global, that each VG is
associated with PV devices (/dev/sda1, etc). Is there a way that lvm can
rescan and reassociate VGs to new PV devices? (as in the disk on the
host channel 1 is added in as /dev/sdd).. If i reboot, this is no
problem to register things, but I am wonder if it is possible to do the
task without a reboot..
Thanks,
Matt Schillinger
mschilli@vss.fsi.com
^ permalink raw reply
* Re: rotation.
From: Geert Uytterhoeven @ 2003-01-08 10:24 UTC (permalink / raw)
To: James Simmons; +Cc: Linux Fbdev development list, Linux Kernel Mailing List
In-Reply-To: <Pine.LNX.4.44.0301072240530.17129-100000@phoenix.infradead.org>
On Tue, 7 Jan 2003, James Simmons wrote:
> I'm about to implement rotation which is needed for devices like the ipaq.
> The question is do we flip the xres and yres values depending on the
> rotation or do we just alter the data that will be drawn to make the
> screen appear to rotate. How does hardware rotate view the x and y axis?
> Are they rotated or does just the data get rotated?
Where are you going to implement the rotation? At the fbcon or fbdev level?
Fbcon has the advantage that it'll work for all frame buffer devices.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
^ permalink raw reply
* Re: [LARTC] Where does the Bandwidth Management taking place after/before
From: Tobias Geiger @ 2003-01-08 10:19 UTC (permalink / raw)
To: lartc
In-Reply-To: <marc-lartc-104202046703231@msgid-missing>
AFAIK:
local stuff: Application -> IPTABLES (OUTPUT) -> ROUTING -> QDISC
routing stuff: IPTABLES (PREROUTING/FORWARD) -> ROUTING ->
IPTABLES-POSTROUTING -> QDISC
these iptables-chains do sometimes a little wired stuff, depending on
the jump-target/Chain (especially PREROUTING/NAT/...) sometimes
routing-code is called to determine the route for iptables, but AFAIK
ALL packets pass after the iptables-code the routing-code and ALWAYS as
a LAST station the qdisc.
off course only outgoing stuff. incoming is more or less :) other way round.
Greetings
Tobias
Srikanth W wrote:
> Hi!
>
> I want to know exactly how the packet flow is occuring in BW management?
>
> and
>
> Where does the Bandwidth Management taking place after/before routing?
>
> Kindly let me know asap.
>
> tnr,
> Srikanth
>
> _______________________________________________
> LARTC mailing list / LARTC@mailman.ds9a.nl
> http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
>
>
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply
* Re: rotation.
From: Geert Uytterhoeven @ 2003-01-08 10:24 UTC (permalink / raw)
To: James Simmons; +Cc: Linux Fbdev development list, Linux Kernel Mailing List
In-Reply-To: <Pine.LNX.4.44.0301072240530.17129-100000@phoenix.infradead.org>
On Tue, 7 Jan 2003, James Simmons wrote:
> I'm about to implement rotation which is needed for devices like the ipaq.
> The question is do we flip the xres and yres values depending on the
> rotation or do we just alter the data that will be drawn to make the
> screen appear to rotate. How does hardware rotate view the x and y axis?
> Are they rotated or does just the data get rotated?
Where are you going to implement the rotation? At the fbcon or fbdev level?
Fbcon has the advantage that it'll work for all frame buffer devices.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply
* Re: 2.5.54 - quota support
From: Miquel van Smoorenburg @ 2003-01-08 10:22 UTC (permalink / raw)
To: linux-kernel
In-Reply-To: <20030108012133.GA725@mail.muni.cz>
In article <20030108012133.GA725@mail.muni.cz>,
Lukas Hejtmanek <xhejtman@mail.muni.cz> wrote:
>On Tue, Jan 07, 2003 at 05:40:28PM +0100, Jan Kara wrote:
>> Reporting 'No such device' was actually bug which was introduced some
>> time ago but nobody probably noticed it... It was introduce when quota
>> code was converted from device numbers to 'bdev' structures.
>> I also fixed one bug in quotaon() call however I'm not sure wheter it
>> could cause the freeze. Anyway patch is attached, try it and tell me
>> about the changes.
>
>Hmm, quotaon / with init=/bin/sh seems to work OK, quota accounting is made and
>repquota displays normal info.
>
>However with normal startup quotaon / still freezes :-(
ulimit ?
Mike.
--
They all laughed when I said I wanted to build a joke-telling machine.
Well, I showed them! Nobody's laughing *now*! -- acesteves@clix.pt
^ permalink raw reply
* Re: the last changes to trident driver
From: Takashi Iwai @ 2003-01-08 10:08 UTC (permalink / raw)
To: James Tappin; +Cc: alsa-devel
In-Reply-To: <20030107232051.2861d226.james@tappin.me.uk>
At Tue, 7 Jan 2003 23:20:51 +0000,
James Tappin wrote:
>
> On Tue, 07 Jan 2003 17:04:47 +0100
> Takashi Iwai <tiwai@suse.de> wrote:
>
> > Hi,
> >
> > if someone has a Trident 4DNX (not DX), could you test the latest CVS
> > driver? i hope my last change doesn't break, but i couldn't test the
> > board atm...
> >
> >
>
> Hi Takashi,
> I've managed to resolve my unresolved references problem by rebuilding
> the kernel without gameport support, but now attempting to aplay a wav
> file produces an immediate segfault (but it refuses to dump core).
hmm, perhaps it caused oops in kernel.
could you check the kernel message and get the trace via ksymoops if
possible?
Takashi
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
^ permalink raw reply
* [LARTC] Where does the Bandwidth Management taking place after/before
From: Srikanth W @ 2003-01-08 10:07 UTC (permalink / raw)
To: lartc
Hi!
I want to know exactly how the packet flow is occuring in BW management?
and
Where does the Bandwidth Management taking place after/before routing?
Kindly let me know asap.
tnr,
Srikanth
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/
^ permalink raw reply
* Re: aic7xxx broken in 2.5.53/54 ?
From: Tomas Szepe @ 2003-01-08 10:05 UTC (permalink / raw)
To: Justin T. Gibbs; +Cc: dipankar, linux-scsi, linux-kernel
In-Reply-To: <703940000.1041999784@aslan.btc.adaptec.com>
> [gibbs@scsiguy.com]
>
> > [gibbs@scsiguy.com]
> >
> > These reads are actually more expensive than just using PIO. Neither of
> > these older drivers included a test to try and catch fishy behavior.
> >
> > Justin, are you quite sure that these tests actually work?
> > I too have just run into
>
> See my recent post to the SCSI list. The tests don't work on
> certain older controllers that lack a feature I was using. The
> latest csets submitted to Linus correct this problem (as verified
> on a dusty dual P-90 PCI/EISA box just added to our regression cluster).
Ok. I can confirm 6.2.26 fixes the false positive here:
PCI: Found IRQ 11 for device 00:10.0
PCI: Found IRQ 10 for device 00:11.0
scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.26
<Adaptec 2940 Ultra SCSI adapter>
aic7880: Ultra Single Channel A, SCSI Id=7, 16/253 SCBs
scsi1 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.26
<Adaptec 2940 Ultra SCSI adapter>
aic7880: Ultra Single Channel A, SCSI Id=7, 16/253 SCBs
Thanks,
--
Tomas Szepe <szepe@pinerecords.com>
^ permalink raw reply
* Re: Honest does not pay here ...
From: venom @ 2003-01-08 10:08 UTC (permalink / raw)
To: Andre Hedrick; +Cc: Larry McVoy, Matthias Andree, linux-kernel
In-Reply-To: <Pine.LNX.4.10.10301071659480.421-100000@master.linux-ide.org>
if I understand your point, a vendor could ask to the end user to apply a patch
to the new kernels, so that modules infrastructure will be changed, and also non
GPLed modules can create their own run queue.
Yes, it is possible, because we are talking about open source (I mean a more
generic definition instead of free-software, i.e. all the software that comes
with source code). I would add, it's in the rules of the game.
But developers for this patch have to be paid, and
patch could create conflicts, and has to be maintained togheter with the
binary only module (depends on costs).
To say the truth, I do not even expect end users to care if the modules is
running with its own kernel threads in his own run queue, or it is using the
defaul queue.
Anyway I found the runqueue concept, as it has been implemented, an
equilibrate and factual solution to incentivate companies to GPL their code,
and I was surprised that none (except a short allusion from you),
in two threads took the opportunity to talk about a fact and a good point.
Luigi Genoni
On Tue, 7 Jan 2003, Andre Hedrick wrote:
> Date: Tue, 7 Jan 2003 17:10:41 -0800 (PST)
> From: Andre Hedrick <andre@linux-ide.org>
> To: venom@sns.it
> Cc: Larry McVoy <lm@bitmover.com>, Matthias Andree <matthias.andree@gmx.de>,
> linux-kernel@vger.kernel.org
> Subject: Re: Honest does not pay here ...
>
>
> Luigi,
>
> You forgot one thing. None of us can control what the end user does.
> If a vendor tells the enduser to alter the 2.5/2.6 kernel and recompile.
> What are you going to do?
>
> Add a clause where the enduser can not change the source code or apply a
> patch to do it for them?
>
> Funny, you lost your rights to do that w/ GPL, as did I.
>
> *sigh*
>
> Andre Hedrick
> LAD Storage Consulting Group
>
> On Wed, 8 Jan 2003 venom@sns.it wrote:
>
> >
> > well, I was forgetting to specify,
> > queues are kernel threads, and that is quite
> > optimum expecially on SMP systems.
> > One big advantage is that conflicts possibilities are
> > (should be) less than minimal.
> >
> > Luigi
> >
> > On Tue, 7 Jan 2003, Larry McVoy wrote:
> >
> > > Date: Tue, 7 Jan 2003 16:30:50 -0800
> > > From: Larry McVoy <lm@bitmover.com>
> > > To: venom@sns.it
> > > Cc: Matthias Andree <matthias.andree@gmx.de>, linux-kernel@vger.kernel.org,
> > > andre@linux-ide.org
> > > Subject: Re: Honest does not pay here ...
> > >
> > >
> > > > In very semplicistic words:
> > > > In 2.5/2.6 kernels, non GPL modules have a big
> > > > penalty, because they cannot create their own queue, but have to use a default
> > > > one.
> > >
> > > I may be showing my ignorance here (won't be the first time) but this makes
> > > me wonder if Linux could provide a way to do "user level drivers". I.e.,
> > > drivers which ran in kernel mode but in the context of a process and had
> > > to talk to the real kernel via pipes or whatever. It's a fair amount of
> > > plumbing but could have the advantage of being a more stable interface
> > > for the drivers.
> > >
> > > If you think about it, drivers are more or less open/close/read/write/ioctl.
> > > They need kernel privileges to do their thing but don't need (and shouldn't
> > > have) access to all the guts of the kernel.
> > >
> > > Can any well traveled driver people see this working or is it nuts?
> > > --
> > > ---
> > > Larry McVoy lm at bitmover.com http://www.bitmover.com/lm
> > >
> >
> > -
> > 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: Why is Nvidia given GPL'd code to use in closed source drivers?
From: Helge Hafting @ 2003-01-08 10:06 UTC (permalink / raw)
To: Valdis.Kletnieks, linux-kernel
In-Reply-To: <200301071515.h07FFKCR008361@turing-police.cc.vt.edu>
Valdis.Kletnieks@vt.edu wrote:
>
> On Tue, 07 Jan 2003 10:08:00 +0100, Helge Hafting <helgehaf@aitel.hist.no> said:
> > loss. Giving away driver code (or at least programming specs)
> > wouldn't be a loss to nvidia though - because users would still
> > need to buy those cards.
>
> It would be a major loss to nvidia *AND* its customers if it were bankrupted in
> a lawsuit because it open-sourced code or specs that contained intellectual
> property that belonged to somebody else.
Perhaps their driver contains some IP. But I seriously doubt the
programming specs for their chips contains such secrets. It is
not as if we need the entire chip layout - it is basically
things like:
"To achieve effect X, write command code 0x3477 into register 5
and the new coordinates into registers 75-78. Then wait 2.03ms before
attempting to access the chip again..."
Something is very wrong if they _can't_ release that sort of
information.
Several other manufacturers have no problem with this.
> In the real world, ideology needs to be tempered with realism.
>
Sure. But in this case, it is more about common sense than ideology.
Helge Hafting
^ 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.