* Re: [LARTC] VRRPD (rfc2338)
From: sabat @ 2002-12-11 11:56 UTC (permalink / raw)
To: lartc
In-Reply-To: <marc-lartc-103950635007394@msgid-missing>
The daemon at http://www.keepalived.org/ is the VRRPd implementation
that's supposed to be the best. It's actually part of the Linux Virtual
Server project (layer 4 load balancer), but the author claims you should
be able to use it as a pure VRRP daemon -- although when I've read the
doc, I couldn't figure out how. (But don't be discouraged by my
impatience. :) It's supposed to be the most mature and ready-for-production.
There's also Jerome Etienne's reference implementation (don't have a
URL, but it's easy to Google). However, I've heard from more than place
that this is too proof-of-concept and perhaps not production-worthy.
Here's a link to a paper about running VRRPd as the hotspare protocol
for linux firewalls (uses Jerome Etienne's implementation):
http://www.gnusec.com/resource/security/docs/HAFirewallLinux-VRRP.pdf.
BTW, keep in mind that if you intend to use VRRP in an environment with
Cisco routers, you'll need to do some work on them too. Cisco routers do
not accept multicast MAC addresses as legit ARP replies by default.
Unfortunately, the VRRP RFC and all implementations use multicast MACs.
What that means is that you'll need to either 1) turn the switch on the
Cisco routers that makes them accept multicast MAC ARP replies (good),
or 2) put a static ARP entry in the Cisco routers for the VRRP multicast
MACs (better).
Hope that helps.
-S
Anton Tinchev wrote:
>Can someone point me for good VRRPD (rfc2338) implementation on linux.
>Some stable and live project
>Thanks
>
>_______________________________________________
>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: PPTP+NAT+MASQ anyone?
From: Roy Sigurd Karlsbakk @ 2002-12-11 11:49 UTC (permalink / raw)
To: Martin Josefsson; +Cc: Netfilter mailinglist
In-Reply-To: <1039447047.25961.47.camel@tux>
> > I've tried all the ones I can find.
> > When trying to apply the pptp-conntrack-nat.patch, I get errors applying
> > it. Do I need to hand patch this thing? I've tried with 2.4.{18,19,20}
>
> Did you run './runme pending' first like the documentation tells you?
yes. I get this error message when trying to patch 2.4.{19|20}.
Testing... pptp-conntrack-nat.patch NOT APPLIED ( 8 missing files)
The extra/pptp-conntrack-nat patch:
Author: Harald Welte <laforge@gnumonks.org>
Status: Beta
This adds CONFIG_IP_NF_PPTP:
Connection tracking and NAT support for PPTP.
Note that this code currently has limitations
- can only NAT connections from PNS to PAC
- doesnt' support multiple calls within one session
-----------------------------------------------------------------
Do you want to apply this patch [N/y/t/f/a/r/b/w/v/q/?]
roy
--
Roy Sigurd Karlsbakk, Datavaktmester
ProntoTV AS - http://www.pronto.tv/
Tel: +47 9801 3356
Computers are like air conditioners.
They stop working when you open Windows.
^ permalink raw reply
* patch for aty128fb.c
From: Paul Mackerras @ 2002-12-11 11:47 UTC (permalink / raw)
To: James Simmons; +Cc: linux-kernel
This patch gets aty128fb.c to compile and work on my G4 powerbook. I
have fixed the bug where the check_var routine would alter the par
structure, and I have fixed up the errors in the powerbook-specific
sleep/wakeup code.
Currently it can only put one rage 128 chip to sleep, but that is ok
for now since I've never seen a laptop with two rage 128 chips yet. :)
The generic device model will ultimately give us a better way to
handle sleep/wakeup.
Paul.
diff -urN linux-2.5/drivers/video/aty128fb.c pmac-2.5/drivers/video/aty128fb.c
--- linux-2.5/drivers/video/aty128fb.c 2002-12-10 15:20:32.000000000 +1100
+++ pmac-2.5/drivers/video/aty128fb.c 2002-12-11 22:41:38.000000000 +1100
@@ -65,10 +65,7 @@
#ifdef CONFIG_ALL_PPC
#include <asm/prom.h>
#include <asm/pci-bridge.h>
-#include <video/macmodes.h>
-#ifdef CONFIG_NVRAM
-#include <linux/nvram.h>
-#endif
+#include "macmodes.h"
#endif
#ifdef CONFIG_ADB_PMU
@@ -285,7 +282,6 @@
struct aty128_crtc {
u32 gen_cntl;
- u32 ext_cntl;
u32 h_total, h_sync_strt_wid;
u32 v_total, v_sync_strt_wid;
u32 pitch;
@@ -326,10 +322,13 @@
unsigned char *save_framebuffer;
int pm_reg;
int crt_on, lcd_on;
+ struct pci_dev *pdev;
+ struct fb_info *next;
#endif
- unsigned char red[64]; /* see comments in aty128fb_setcolreg */
- unsigned char green[64];
- unsigned char blue[64];
+ u8 red[32]; /* see aty128fb_setcolreg */
+ u8 green[64];
+ u8 blue[32];
+ u32 pseudo_palette[16]; /* used for TRUECOLOR */
};
#ifdef CONFIG_PMAC_PBOOK
@@ -337,6 +336,7 @@
static struct pmu_sleep_notifier aty128_sleep_notifier = {
aty128_sleep_notify, SLEEP_LEVEL_VIDEO,
};
+static struct fb_info *aty128_fb = NULL;
#endif
#define round_div(n, d) ((n+(d/2))/d)
@@ -1203,7 +1203,11 @@
{
struct aty128fb_par *par = info->par;
u32 config;
-
+ int err;
+
+ if ((err = aty128_decode_var(&info->var, par)) != 0)
+ return err;
+
if (par->blitter_may_be_busy)
wait_for_idle(par);
@@ -1271,15 +1275,22 @@
aty128_decode_var(struct fb_var_screeninfo *var, struct aty128fb_par *par)
{
int err;
+ struct aty128_crtc crtc;
+ struct aty128_pll pll;
+ struct aty128_ddafifo fifo_reg;
- if ((err = aty128_var_to_crtc(var, &par->crtc, par)))
+ if ((err = aty128_var_to_crtc(var, &crtc, par)))
return err;
- if ((err = aty128_var_to_pll(var->pixclock, &par->pll, par)))
+ if ((err = aty128_var_to_pll(var->pixclock, &pll, par)))
return err;
- if ((err = aty128_ddafifo(&par->fifo_reg, &par->pll, par->crtc.depth, par)))
+ if ((err = aty128_ddafifo(&fifo_reg, &pll, crtc.depth, par)))
return err;
+
+ par->crtc = crtc;
+ par->pll = pll;
+ par->fifo_reg = fifo_reg;
par->accel_flags = var->accel_flags;
return 0;
@@ -1312,12 +1323,13 @@
static int
aty128fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
{
- struct aty128fb_par *par = info->par;
+ struct aty128fb_par par;
int err;
- if ((err = aty128_decode_var(var, par)) != 0)
+ par = *(struct aty128fb_par *)info->par;
+ if ((err = aty128_decode_var(var, &par)) != 0)
return err;
- aty128_encode_var(var, par);
+ aty128_encode_var(var, &par);
return 0;
}
@@ -1415,7 +1427,7 @@
}
#endif
#ifdef CONFIG_ALL_PPC
- /* vmode and cmode depreciated */
+ /* vmode and cmode deprecated */
if (!strncmp(this_opt, "vmode:", 6)) {
unsigned int vmode = simple_strtoul(this_opt+6, NULL, 0);
if (vmode > 0 && vmode <= VMODE_MAX)
@@ -1602,7 +1614,12 @@
#endif /* CONFIG_PMAC_BACKLIGHT */
#ifdef CONFIG_PMAC_PBOOK
par->pm_reg = pci_find_capability(pdev, PCI_CAP_ID_PM);
- pmu_register_sleep_notifier(&aty128_sleep_notifier);
+ if (aty128_fb == NULL) {
+ /* XXX can only put one chip to sleep */
+ aty128_fb = info;
+ } else
+ printk(KERN_WARNING "aty128fb: can only sleep one Rage 128\n");
+ par->pdev = pdev;
#endif
printk(KERN_INFO "fb%d: %s frame buffer device on %s\n",
@@ -1647,8 +1664,7 @@
}
/* We have the resources. Now virtualize them */
- size = sizeof(struct fb_info) + sizeof(struct aty128fb_par) +
- sizeof(u32)*16;
+ size = sizeof(struct fb_info) + sizeof(struct aty128fb_par);
if (!(info = kmalloc(size, GFP_ATOMIC))) {
printk(KERN_ERR "aty128fb: can't alloc fb_info_aty128\n");
goto err_unmap_out;
@@ -1656,9 +1672,7 @@
memset(info, 0, size);
par = (struct aty128fb_par *)(info + 1);
- info->pseudo_palette = (void *) (par + 1);
-
- memset(info, 0, sizeof(struct fb_info));
+ info->pseudo_palette = par->pseudo_palette;
info->par = par;
info->fix = aty128fb_fix;
@@ -1758,6 +1772,10 @@
pci_resource_len(pdev, 1));
release_mem_region(pci_resource_start(pdev, 2),
pci_resource_len(pdev, 2));
+#ifdef CONFIG_PMAC_PBOOK
+ if (info == aty128_fb)
+ aty128_fb = NULL;
+#endif
kfree(info);
}
#endif /* CONFIG_PCI */
@@ -2008,7 +2026,7 @@
}
}
- if (par->crtc.depth == 16) {
+ if (par->crtc.depth == 16 && regno > 0) {
/*
* With the 5-6-5 split of bits for RGB at 16 bits/pixel, we
* have 32 slots for R and B values but 64 slots for G values.
@@ -2016,12 +2034,13 @@
* goes in a different slot, and we have to avoid disturbing
* the other fields in the slots we touch.
*/
- par->red[regno] = red;
par->green[regno] = green;
- par->blue[regno] = blue;
- if (regno > 0 && regno < 32)
+ if (regno < 32) {
+ par->red[regno] = red;
+ par->blue[regno] = blue;
aty128_st_pal(regno * 8, red, par->green[regno*2],
blue, par);
+ }
red = par->red[regno/2];
blue = par->blue[regno/2];
regno <<= 2;
@@ -2213,6 +2232,7 @@
{
u32 pmgt;
u16 pwr_command;
+ struct pci_dev *pdev = par->pdev;
if (!par->pm_reg)
return;
@@ -2237,17 +2257,16 @@
aty_st_le32(BUS_CNTL1, 0x00000010);
aty_st_le32(MEM_POWER_MISC, 0x0c830000);
mdelay(100);
- pci_read_config_word(par->pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
+ pci_read_config_word(pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
/* Switch PCI power management to D2 */
- pci_write_config_word(par->pdev, par->pm_reg+PCI_PM_CTRL,
+ pci_write_config_word(pdev, par->pm_reg+PCI_PM_CTRL,
(pwr_command & ~PCI_PM_CTRL_STATE_MASK) | 2);
- pci_read_config_word(par->pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
+ pci_read_config_word(pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
} else {
/* Switch back PCI power management to D0 */
mdelay(100);
- pci_write_config_word(par->pdev, par->pm_reg+PCI_PM_CTRL, 0);
- mdelay(100);
- pci_read_config_word(par->pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
+ pci_write_config_word(pdev, par->pm_reg+PCI_PM_CTRL, 0);
+ pci_read_config_word(pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
mdelay(100);
}
}
@@ -2259,10 +2278,13 @@
int
aty128_sleep_notify(struct pmu_sleep_notifier *self, int when)
{
- int result = PBOOK_SLEEP_OK, nb;
- struct fb_info *info = info; /* FIXME!!! How do find which framebuffer */
- struct aty128fb_par *par = info->par;
+ int nb;
+ struct fb_info *info = aty128_fb;
+ struct aty128fb_par *par;
+ if (info == NULL)
+ return PBOOK_SLEEP_OK;
+ par = info->par;
nb = info->var.yres * info->fix.line_length;
switch (when) {
@@ -2311,17 +2333,23 @@
aty128fb_blank(0, info);
break;
}
- return result;
+ return PBOOK_SLEEP_OK;
}
#endif /* CONFIG_PMAC_PBOOK */
int __init aty128fb_init(void)
{
+#ifdef CONFIG_PMAC_PBOOK
+ pmu_register_sleep_notifier(&aty128_sleep_notifier);
+#endif
return pci_module_init(&aty128fb_driver);
}
static void __exit aty128fb_exit(void)
{
+#ifdef CONFIG_PMAC_PBOOK
+ pmu_unregister_sleep_notifier(&aty128_sleep_notifier);
+#endif
pci_unregister_driver(&aty128fb_driver);
}
^ permalink raw reply
* patch for controlfb.c
From: Paul Mackerras @ 2002-12-11 11:50 UTC (permalink / raw)
To: James Simmons; +Cc: Benjamin Herrenschmidt, linux-kernel
This patch updates controlfb.c so it compiles cleanly. Most of the
changes are from the linuxppc-2.5 tree, with some extra changes to
accommodate the most recent changes to the framebuffer API.
Paul.
diff -urN linux-2.5/drivers/video/controlfb.c pmac-2.5/drivers/video/controlfb.c
--- linux-2.5/drivers/video/controlfb.c 2002-12-10 15:20:32.000000000 +1100
+++ pmac-2.5/drivers/video/controlfb.c 2002-12-11 22:37:00.000000000 +1100
@@ -22,6 +22,10 @@
* control.c: Console support for PowerMac "control" display adaptor.
* Copyright (C) 1996 Paul Mackerras
*
+ * Updated to 2.5 framebuffer API by Ben Herrenschmidt
+ * <benh@kernel.crashing.org>, Paul Mackerras <paulus@samba.org>,
+ * and James Simmons <jsimmons@infradead.org>.
+ *
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of this archive for
* more details.
@@ -50,12 +54,7 @@
#include <asm/pgtable.h>
#include <asm/btext.h>
-#include <video/fbcon.h>
-#include <video/fbcon-cfb8.h>
-#include <video/fbcon-cfb16.h>
-#include <video/fbcon-cfb32.h>
-#include <video/macmodes.h>
-
+#include "macmodes.h"
#include "controlfb.h"
struct fb_par_control {
@@ -97,7 +96,6 @@
struct fb_info_control {
struct fb_info info;
- struct display display; /* Will disappear */
struct fb_par_control par;
u32 pseudo_palette[17];
@@ -119,14 +117,14 @@
};
/* control register access macro */
-#define CNTRL_REG(INFO,REG) (&(((INFO)->control_regs-> ## REG).r))
+#define CNTRL_REG(INFO,REG) (&(((INFO)->control_regs->REG).r))
/******************** Prototypes for exported functions ********************/
/*
* struct fb_ops
*/
-static int controlfb_pan_display(struct fb_var_screeninfo *var, int con,
+static int controlfb_pan_display(struct fb_var_screeninfo *var,
struct fb_info *info);
static int controlfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
u_int transp, struct fb_info *info);
@@ -171,11 +169,8 @@
static struct fb_ops controlfb_ops = {
.owner = THIS_MODULE,
- .fb_set_var = gen_set_var,
.fb_check_var = controlfb_check_var,
.fb_set_par = controlfb_set_par,
- .fb_get_cmap = gen_get_cmap,
- .fb_set_cmap = gen_set_cmap,
.fb_setcolreg = controlfb_setcolreg,
.fb_pan_display = controlfb_pan_display,
.fb_blank = controlfb_blank,
@@ -265,8 +260,8 @@
}
-static int controlfb_pan_display(struct fb_var_screeninfo *var, int con,
- struct fb_info *info)
+static int controlfb_pan_display(struct fb_var_screeninfo *var,
+ struct fb_info *info)
{
unsigned int xoffset, hstep;
struct fb_info_control *p = (struct fb_info_control *)info;
@@ -483,7 +478,7 @@
/* Apply default var */
p->info.var = var;
var.activate = FB_ACTIVATE_NOW;
- rc = gen_set_var(&var, -1, &p->info);
+ rc = fb_set_var(&var, &p->info);
if (rc && (vmode != VMODE_640_480_60 || cmode != CMODE_8))
goto try_again;
@@ -491,7 +486,7 @@
if (register_framebuffer(&p->info) < 0)
return -ENXIO;
- printk(KERN_INFO "fb%d: control display adapter\n", GET_FB_IDX(p->info.node));
+ printk(KERN_INFO "fb%d: control display adapter\n", minor(p->info.node));
return 0;
}
@@ -1015,22 +1010,12 @@
static void __init control_init_info(struct fb_info *info, struct fb_info_control *p)
{
/* Fill fb_info */
- strcpy(info->modename, "control");
- info->currcon = -1;
info->par = &p->par;
info->node = NODEV;
info->fbops = &controlfb_ops;
- info->disp = &p->display;
info->pseudo_palette = p->pseudo_palette;
info->flags = FBINFO_FLAG_DEFAULT;
- strncpy (info->fontname, fontname, sizeof (info->fontname));
- info->fontname[sizeof (info->fontname) - 1] = 0;
- info->changevar = NULL;
- info->display_fg = NULL;
info->screen_base = (char *) p->frame_buffer + CTRLFB_OFF;
- info->changevar = NULL;
- info->switch_con = gen_switch;
- info->updatevar = gen_update_var;
fb_alloc_cmap(&info->cmap, 256, 0);
^ permalink raw reply
* NFS Problem
From: Muhammad Sibtain Bashir @ 2002-12-11 11:41 UTC (permalink / raw)
To: nfs
[-- Attachment #1: Type: text/plain, Size: 617 bytes --]
Dear sir
i am using NFS server , instead of using the domain names i am using the IP addresses of my clients machines
the file /etc/export looks like
/google 203.215.160.2(rw)
/345 203.215.160.2(rw)
/mnt/cdrom 203.215.160.2(rw)
now when i mount the directories on my client machine it get mounted okay and i can read any file in the mounted directories but as above i have given the write permision as well ,but i cant write any thing and this message show * permission denied*.
waiting for response plz .
regards
Muhammad Sibtain
[-- Attachment #2: Type: text/html, Size: 1883 bytes --]
^ permalink raw reply
* Re: 2.5.51: sleep broken
From: Pavel Machek @ 2002-12-11 11:41 UTC (permalink / raw)
To: P. Christeas; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
In-Reply-To: <200212101534.12838.p_christ-U04EIuiosng@public.gmane.org>
Hi!
> I 've just tested the 2.5.51 (w. official 20021205 ACPI)
> I noted that S1 is broken now (had worked long since)
Still the 2.5.50 bug with sleep writes being ignored?
> In dmesg I note:
> ACPI: Wakeup code way too big, will crash on attempt to suspend
This is about S3
--
Pavel
Written on sharp zaurus, because my Velo1 broke. If you have Velo you don't need...
-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility
Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
^ permalink raw reply
* Kernel Module
From: chinnakka.b @ 2002-12-11 11:40 UTC (permalink / raw)
To: linux-kernel
Hello sir,
After building the kernel i tried to insert the modules scsi_mod,sd_mod,usb-
storage
It is giving could not find the kernel version the module was compiled for
what is wrong with this?
waiting for your response
regards
chinnakka
^ permalink raw reply
* Re: CD Writing in 2.5.51
From: mdew @ 2002-12-11 11:35 UTC (permalink / raw)
To: Markus Plail; +Cc: Linux Kernel
In-Reply-To: <8765u03jjj.fsf@web.de>
On Thu, 2002-12-12 at 00:02, Markus Plail wrote:
> * mdew writes:
> >awesome, i got it to work, thanks.. tho I'm now trying to enable the
> >DMA on the drives... (unsuccessfully)
>
> >/dev/hda == CDRW (24/12/40)
> >/dev/hdb == DVDROM (8/40)
>
> >/dev/hda:
> > setting using_dma to 1 (on)
> > HDIO_SET_DMA failed: Operation not permitted
> > using_dma = 0 (off)
> >nirvana:~# hdparm -d1 /dev/hdb
>
> >/dev/hdb:
> > setting using_dma to 1 (on)
> > HDIO_SET_DMA failed: Operation not permitted
> > using_dma = 0 (off)
>
> Perhaps CONFIG_IDEDMA_ONLYDISK is set? Or you don't have compiled in
> the specific driver for your chipset?
yeah my mistake, CONFIG_IDEDMA_ONLYDISK was selected, fixed..thanks for
help dude..much appreciated.
-mdew
^ permalink raw reply
* Re: portfw on iptables 2.4 kernel problem.
From: Andrea Rossato @ 2002-12-11 11:26 UTC (permalink / raw)
To: netfilter
In-Reply-To: <014901c2a02a$0dbf59f0$0b00000a@nocpc3>
louie miranda wrote:
> I have an internel ftp server w/c i want to access over my linux router(gw)
> Its internel IP is 10.0.0.11 and port 21. My externel IP lets say
> 203.100.100.1.
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -d 10.0.0.11 -j ACCEPT
iptables -A FORWARD -s 10.0.0.11 -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d 203.100.100.1 --dport 21 -j DNAT
--to 10.0.0.11
ptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 203.100.100.1
tha should work: it's working for me, at least.
Remember that forwarded traffic must be SNATed with the source (public)
address of the forwarding box.
andrea
^ permalink raw reply
* Re: [PATCH] Notifier for significant events on i386
From: Vamsi Krishna S . @ 2002-12-11 11:43 UTC (permalink / raw)
To: William Lee Irwin III, Stephen Hemminger, Kernel List, lkcd-devel,
ak, cminyard, vamsi_krishna
In-Reply-To: <20021211111639.GJ9882@holomorphy.com>
On Wed, Dec 11, 2002 at 03:16:39AM -0800, William Lee Irwin III wrote:
> On Wed, Dec 11, 2002 at 04:51:53PM +0530, Vamsi Krishna S . wrote:
> > <snip>
> >
> > I am considering using a RCU-based list for notifier chains.
> > Corey has done some work on these lines to add NMI notifier
> > chain, I think it should be generalised on for all notifiers.
>
> A coherent explanation of how notifier locking is supposed to work
> would be wonderful to have. I'd like to register notifiers but am
> pig ignorant of how to lock my structures down to work with it.
>
Unless I am missing something, notifiers have always been racy.
No amount of locking you do in individual modules to prevent
races will help as the notifier chain is walked inside
notifier_call_chain() in kernel/sys.c. One would need to
add some form of locking there (*) so that users of notifier
chains need not worry about races/locking at all.
(*) converting the notifier chain to an RCU-based list guarentees
to modules using the notifier chains that their handlers will
not be called once the handler is unregistered.
> Bill
Vamsi.
--
Vamsi Krishna S.
Linux Technology Center,
IBM Software Lab, Bangalore.
Ph: +91 80 5044959
Internet: vamsi@in.ibm.com
^ permalink raw reply
* Re: [PATCH] Notifier for significant events on i386
From: William Lee Irwin III @ 2002-12-11 11:16 UTC (permalink / raw)
To: Vamsi Krishna S .
Cc: Stephen Hemminger, Kernel List, lkcd-devel, ak, cminyard,
vamsi_krishna
In-Reply-To: <20021211165153.A17546@in.ibm.com>
On Wed, Dec 11, 2002 at 04:51:53PM +0530, Vamsi Krishna S . wrote:
> I support this, it makes all kernel-space debug tools less intrusive.
> It may be out of scope for this work but there are a couple of
> other issues to consider here:
> - turn trap1/trap3 to interrupt gates: kprobes does this, kgdb turns
> off interrupts in its own handler, I suppose other tools too need
> this.
> - notifier lists are racy on SMP, IFAICT, read_lock(¬ifier_lock)
> needs to be taken in notifier_call_chain(), but that too is
> deadlock prone.
> Andi,
> Isn't this a problem on x86_64 too? What is there to prevent a
> handler from being removed from the notifier list while it
> is being used to call the handler on another CPU?
> I am considering using a RCU-based list for notifier chains.
> Corey has done some work on these lines to add NMI notifier
> chain, I think it should be generalised on for all notifiers.
A coherent explanation of how notifier locking is supposed to work
would be wonderful to have. I'd like to register notifiers but am
pig ignorant of how to lock my structures down to work with it.
Bill
^ permalink raw reply
* Re: NAND and concat
From: Robert Kaiser @ 2002-12-11 12:46 UTC (permalink / raw)
To: Christian Gan, linux-mtd, yaffs list
In-Reply-To: <NFBBLPGPLKFIKCCPLALEOEPHCEAA.cgan@iders.ca>
Am Mittwoch, 11. Dezember 2002 00:29 schrieb Christian Gan:
> Is anyone working on concat for NAND flashes?
Probably not.
> I looked though and realised
> that there is no functionality at the moment for NAND (i.e. no support for
> read/write oob etc).
I must admit that I knew nothing about NAND flashes when I wrote the concat
stuff (and this hasn't improved much in the meantime) :-(.
OTOH, all the concat stuff does is to redirect calls to the hardware drivers,
so, except for the maintaining of OOB data, what NAND specific functionality
would be needed ?
Rob
----------------------------------------------------------------
Robert Kaiser email: rkaiser@sysgo.de
SYSGO AG
Am Pfaffenstein 14 phone: (49) 6136 9948-762
D-55270 Klein-Winternheim / Germany fax: (49) 6136 9948-10
^ permalink raw reply
* Re: [PATCH] Notifier for significant events on i386
From: Vamsi Krishna S . @ 2002-12-11 11:21 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: Kernel List, lkcd-devel, ak, cminyard, vamsi_krishna
In-Reply-To: <1039471369.1055.161.camel@dell_ss3.pdx.osdl.net>
On Mon, Dec 09, 2002 at 10:08:11PM +0000, Stephen Hemminger wrote:
> This is a successor to the previous patch for notifier callback when NMI
> watchdog occurs. It is a port of x86_64 code (thanks for the suggestion
> Andi Kleen <ak@suse.de>) with extensions for watchdog, and integration
> of panic handling.
>
> To get notified for panic, oops, NMI and other events the caller needs
> to insert itself in the notify_die chain. The callback can then filter
> out which events are of interest.
>
> This started out as a way to hook in LKCD, but it is general enough that
> kprobe, kdb, and other utilities can use it as well.
>
I support this, it makes all kernel-space debug tools less intrusive.
It may be out of scope for this work but there are a couple of
other issues to consider here:
- turn trap1/trap3 to interrupt gates: kprobes does this, kgdb turns
off interrupts in its own handler, I suppose other tools too need
this.
- notifier lists are racy on SMP, IFAICT, read_lock(¬ifier_lock)
needs to be taken in notifier_call_chain(), but that too is
deadlock prone.
Andi,
Isn't this a problem on x86_64 too? What is there to prevent a
handler from being removed from the notifier list while it
is being used to call the handler on another CPU?
I am considering using a RCU-based list for notifier chains.
Corey has done some work on these lines to add NMI notifier
chain, I think it should be generalised on for all notifiers.
Thoughts? Comments?
--
Vamsi Krishna S.
Linux Technology Center,
IBM Software Lab, Bangalore.
Ph: +91 80 5044959
Internet: vamsi@in.ibm.com
^ permalink raw reply
* Re: Warning: about not setting max_sectors
From: Christoph Hellwig @ 2002-12-11 10:57 UTC (permalink / raw)
To: James Bottomley; +Cc: linux-scsi
In-Reply-To: <200212101447.gBAElpJ01949@localhost.localdomain>
On Tue, Dec 10, 2002 at 08:47:50AM -0600, James Bottomley wrote:
> we should probably take the lowest of the scsi-1 minimum and the HBA if it
> exists in scsi_initialize_queue and readjust it when we've decided on the
> capabilities of the device.
>
> In any event, moving the zero check for shpnt->max_sectors to
> scsi_initialize_queue would fix the loss of scsi_add_host, wouldn't it?
Yepp. Will you fix it or should I send a patch?
^ permalink raw reply
* Cache routine patch
From: Carsten Langgaard @ 2002-12-11 10:56 UTC (permalink / raw)
To: Ralf Baechle, linux-mips
[-- Attachment #1: Type: text/plain, Size: 660 bytes --]
I have attached a patch, containing some fixes for some of the cache
routines.
Most of it is related to the MIPS32/MIPS64 specific routines, but it
also contain a fix, which appear to be needed in all of the dma flushing
routines. The problem is that we sometimes flush a cache line too much.
Ralf, could you please take a look at it ?
/Carsten
--
_ _ ____ ___ Carsten Langgaard Mailto:carstenl@mips.com
|\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527
| \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555
TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556
Denmark http://www.mips.com
[-- Attachment #2: cache.patch --]
[-- Type: text/plain, Size: 17747 bytes --]
Index: arch/mips/mm/c-mips32.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/c-mips32.c,v
retrieving revision 1.3.2.7
diff -u -r1.3.2.7 c-mips32.c
--- arch/mips/mm/c-mips32.c 2 Dec 2002 00:24:49 -0000 1.3.2.7
+++ arch/mips/mm/c-mips32.c 11 Dec 2002 10:00:18 -0000
@@ -298,13 +298,18 @@
static void
mips32_flush_icache_page(struct vm_area_struct *vma, struct page *page)
{
- int address;
-
+ /*
+ * If there's no context yet, or the page isn't executable, no icache
+ * flush is needed.
+ */
if (!(vma->vm_flags & VM_EXEC))
return;
- address = KSEG0 + ((unsigned long)page_address(page) & PAGE_MASK & (dcache_size - 1));
- blast_icache_page_indexed(address);
+ /*
+ * We're not sure of the virtual address(es) involved here, so
+ * conservatively flush the entire caches.
+ */
+ flush_cache_all();
}
/*
@@ -317,11 +322,11 @@
unsigned int flags;
if (size >= dcache_size) {
- flush_cache_all();
+ blast_dcache();
} else {
__save_and_cli(flags);
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~(dc_lsize - 1);
+ end = (addr + size - 1) & ~(dc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
@@ -338,12 +343,12 @@
unsigned long end, a;
if (size >= scache_size) {
- flush_cache_all();
+ blast_scache();
return;
}
a = addr & ~(sc_lsize - 1);
- end = (addr + size) & ~(sc_lsize - 1);
+ end = (addr + size - 1) & ~(sc_lsize - 1);
while (1) {
flush_scache_line(a); /* Hit_Writeback_Inv_SD */
if (a == end) break;
@@ -358,13 +363,13 @@
unsigned int flags;
if (size >= dcache_size) {
- flush_cache_all();
+ blast_dcache();
} else {
__save_and_cli(flags);
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~(dc_lsize - 1);
+ end = (addr + size - 1) & ~(dc_lsize - 1);
while (1) {
- flush_dcache_line(a); /* Hit_Writeback_Inv_D */
+ invalidate_dcache_line(a); /* Hit_Inv_D */
if (a == end) break;
a += dc_lsize;
}
@@ -380,14 +385,14 @@
unsigned long end, a;
if (size >= scache_size) {
- flush_cache_all();
+ blast_scache();
return;
}
a = addr & ~(sc_lsize - 1);
- end = (addr + size) & ~(sc_lsize - 1);
+ end = (addr + size - 1) & ~(sc_lsize - 1);
while (1) {
- flush_scache_line(a); /* Hit_Writeback_Inv_SD */
+ invalidate_scache_line(a); /* Hit_Inv_SD */
if (a == end) break;
a += sc_lsize;
}
@@ -412,7 +417,7 @@
static void mips32_flush_icache_all(void)
{
- if (mips_cpu.cputype == CPU_20KC) {
+ if (mips_cpu.icache.flags | MIPS_CACHE_VTAG_CACHE) {
blast_icache();
}
}
@@ -423,6 +428,7 @@
unsigned long config1;
unsigned int lsize;
+ mips_cpu.icache.flags = 0;
if (!(config & (1 << 31))) {
/*
* Not a MIPS32 complainant CPU.
@@ -452,6 +458,16 @@
ic_lsize = mips_cpu.icache.linesz;
icache_size = mips_cpu.icache.sets * mips_cpu.icache.ways *
ic_lsize;
+
+ if ((config & 0x8) || (mips_cpu.cputype == CPU_20KC)) {
+ /*
+ * The CPU has a virtually tagged I-cache.
+ * Some older 20Kc chips doesn't have the 'VI' bit in
+ * the config register, so we also check for 20Kc.
+ */
+ mips_cpu.icache.flags = MIPS_CACHE_VTAG_CACHE;
+ printk("Virtually tagged I-cache detected\n");
+ }
}
printk("Primary instruction cache %dkb, linesize %d bytes (%d ways)\n",
icache_size >> 10, ic_lsize, mips_cpu.icache.ways);
@@ -462,6 +478,7 @@
unsigned long config1;
unsigned int lsize;
+ mips_cpu.dcache.flags = 0;
if (!(config & (1 << 31))) {
/*
* Not a MIPS32 complainant CPU.
Index: arch/mips/mm/c-r4k.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/c-r4k.c,v
retrieving revision 1.3.2.12
diff -u -r1.3.2.12 c-r4k.c
--- arch/mips/mm/c-r4k.c 6 Dec 2002 18:46:47 -0000 1.3.2.12
+++ arch/mips/mm/c-r4k.c 11 Dec 2002 10:00:18 -0000
@@ -970,7 +970,7 @@
#endif
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~(dc_lsize - 1);
+ end = (addr + size - 1) & ~(dc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
@@ -993,7 +993,7 @@
}
a = addr & ~(sc_lsize - 1);
- end = (addr + size) & ~(sc_lsize - 1);
+ end = (addr + size - 1) & ~(sc_lsize - 1);
while (1) {
flush_scache_line(a); /* Hit_Writeback_Inv_SD */
if (a == end) break;
@@ -1016,7 +1016,7 @@
#endif
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~(dc_lsize - 1);
+ end = (addr + size - 1) & ~(dc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
@@ -1040,7 +1040,7 @@
}
a = addr & ~(sc_lsize - 1);
- end = (addr + size) & ~(sc_lsize - 1);
+ end = (addr + size - 1) & ~(sc_lsize - 1);
while (1) {
flush_scache_line(a); /* Hit_Writeback_Inv_SD */
if (a == end) break;
Index: arch/mips/mm/c-r5432.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/c-r5432.c,v
retrieving revision 1.4.2.3
diff -u -r1.4.2.3 c-r5432.c
--- arch/mips/mm/c-r5432.c 2 Dec 2002 00:24:49 -0000 1.4.2.3
+++ arch/mips/mm/c-r5432.c 11 Dec 2002 10:00:18 -0000
@@ -384,7 +384,7 @@
flush_cache_all();
} else {
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~(dc_lsize - 1);
+ end = (addr + size - 1) & ~(dc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
@@ -403,7 +403,7 @@
flush_cache_all();
} else {
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~(dc_lsize - 1);
+ end = (addr + size - 1) & ~(dc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
Index: arch/mips/mm/c-rm7k.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/c-rm7k.c,v
retrieving revision 1.4.2.5
diff -u -r1.4.2.5 c-rm7k.c
--- arch/mips/mm/c-rm7k.c 2 Dec 2002 00:24:49 -0000 1.4.2.5
+++ arch/mips/mm/c-rm7k.c 11 Dec 2002 10:00:18 -0000
@@ -131,7 +131,7 @@
unsigned long end, a;
a = addr & ~(sc_lsize - 1);
- end = (addr + size) & ~(sc_lsize - 1);
+ end = (addr + size - 1) & ~(sc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
flush_scache_line(a); /* Hit_Writeback_Inv_SD */
@@ -143,7 +143,7 @@
return;
a = addr & ~(tc_pagesize - 1);
- end = (addr + size) & ~(tc_pagesize - 1);
+ end = (addr + size - 1) & ~(tc_pagesize - 1);
while(1) {
invalidate_tcache_page(a); /* Page_Invalidate_T */
if (a == end) break;
@@ -157,7 +157,7 @@
unsigned long end, a;
a = addr & ~(sc_lsize - 1);
- end = (addr + size) & ~(sc_lsize - 1);
+ end = (addr + size - 1) & ~(sc_lsize - 1);
while (1) {
invalidate_dcache_line(a); /* Hit_Invalidate_D */
invalidate_scache_line(a); /* Hit_Invalidate_SD */
@@ -169,7 +169,7 @@
return;
a = addr & ~(tc_pagesize - 1);
- end = (addr + size) & ~(tc_pagesize - 1);
+ end = (addr + size - 1) & ~(tc_pagesize - 1);
while(1) {
invalidate_tcache_page(a); /* Page_Invalidate_T */
if (a == end) break;
Index: arch/mips/mm/c-tx39.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/c-tx39.c,v
retrieving revision 1.4.2.3
diff -u -r1.4.2.3 c-tx39.c
--- arch/mips/mm/c-tx39.c 2 Dec 2002 00:24:50 -0000 1.4.2.3
+++ arch/mips/mm/c-tx39.c 11 Dec 2002 10:00:18 -0000
@@ -65,7 +65,7 @@
iob();
a = addr & ~(dcache_lsize - 1);
- end = (addr + size) & ~(dcache_lsize - 1);
+ end = (addr + size - 1) & ~(dcache_lsize - 1);
while (1) {
invalidate_dcache_line(a); /* Hit_Invalidate_D */
if (a == end) break;
@@ -198,7 +198,7 @@
flush_cache_all();
} else {
a = addr & ~(dcache_lsize - 1);
- end = (addr + size) & ~(dcache_lsize - 1);
+ end = (addr + size - 1) & ~(dcache_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
@@ -215,7 +215,7 @@
flush_cache_all();
} else {
a = addr & ~(dcache_lsize - 1);
- end = (addr + size) & ~(dcache_lsize - 1);
+ end = (addr + size - 1) & ~(dcache_lsize - 1);
while (1) {
invalidate_dcache_line(a); /* Hit_Invalidate_D */
if (a == end) break;
Index: arch/mips/mm/c-tx49.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/mm/c-tx49.c,v
retrieving revision 1.3.2.3
diff -u -r1.3.2.3 c-tx49.c
--- arch/mips/mm/c-tx49.c 2 Dec 2002 00:24:50 -0000 1.3.2.3
+++ arch/mips/mm/c-tx49.c 11 Dec 2002 10:00:18 -0000
@@ -311,7 +311,7 @@
__save_and_cli(flags);
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~(dc_lsize - 1);
+ end = (addr + size - 1) & ~(dc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
@@ -333,7 +333,7 @@
__save_and_cli(flags);
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~(dc_lsize - 1);
+ end = (addr + size - 1) & ~(dc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
Index: arch/mips64/mm/c-mips64.c
===================================================================
RCS file: /home/cvs/linux/arch/mips64/mm/c-mips64.c,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 c-mips64.c
--- arch/mips64/mm/c-mips64.c 2 Dec 2002 00:24:52 -0000 1.1.2.4
+++ arch/mips64/mm/c-mips64.c 11 Dec 2002 10:00:18 -0000
@@ -301,13 +301,18 @@
static void
mips64_flush_icache_page(struct vm_area_struct *vma, struct page *page)
{
- unsigned long address;
-
+ /*
+ * If there's no context yet, or the page isn't executable, no icache
+ * flush is needed.
+ */
if (!(vma->vm_flags & VM_EXEC))
return;
- address = KSEG0 + ((unsigned long)page_address(page) & PAGE_MASK & ((unsigned long)icache_size - 1));
- blast_icache_page_indexed(address);
+ /*
+ * We're not sure of the virtual address(es) involved here, so
+ * conservatively flush the entire caches.
+ */
+ flush_cache_all();
}
/*
@@ -324,7 +329,7 @@
} else {
__save_and_cli(flags);
a = addr & ~(dc_lsize - 1);
- end = (addr + size) & ~((unsigned long)dc_lsize - 1);
+ end = (addr + size - 1) & ~((unsigned long)dc_lsize - 1);
while (1) {
flush_dcache_line(a); /* Hit_Writeback_Inv_D */
if (a == end) break;
@@ -346,7 +351,7 @@
}
a = addr & ~(sc_lsize - 1);
- end = (addr + size) & ~(sc_lsize - 1);
+ end = (addr + size - 1) & ~(sc_lsize - 1);
while (1) {
flush_scache_line(a); /* Hit_Writeback_Inv_SD */
if (a == end) break;
@@ -365,7 +370,7 @@
} else {
__save_and_cli(flags);
a = addr & ~((unsigned long)dc_lsize - 1);
- end = (addr + size) & ~((unsigned long)dc_lsize - 1);
+ end = (addr + size - 1) & ~((unsigned long)dc_lsize - 1);
while (1) {
invalidate_dcache_line(a); /* Hit_Inv_D */
if (a == end) break;
@@ -388,7 +393,7 @@
}
a = addr & ~(sc_lsize - 1);
- end = (addr + size) & ~(sc_lsize - 1);
+ end = (addr + size - 1) & ~(sc_lsize - 1);
while (1) {
invalidate_scache_line(a); /* Hit_Writeback_Inv_SD */
if (a == end) break;
@@ -416,7 +421,7 @@
static void
mips64_flush_icache_all(void)
{
- if (mips_cpu.cputype == CPU_20KC) {
+ if (mips_cpu.icache.flags | MIPS_CACHE_VTAG_CACHE) {
blast_icache();
}
}
@@ -428,6 +433,7 @@
unsigned long config1;
unsigned int lsize;
+ mips_cpu.icache.flags = 0;
if (!(config & (1 << 31))) {
/*
* Not a MIPS64 complainant CPU.
@@ -457,6 +463,16 @@
ic_lsize = mips_cpu.icache.linesz;
icache_size = mips_cpu.icache.sets * mips_cpu.icache.ways *
ic_lsize;
+
+ if ((config & 0x8) || (mips_cpu.cputype == CPU_20KC)) {
+ /*
+ * The CPU has a virtually tagged I-cache.
+ * Some older 20Kc chips doesn't have the 'VI' bit in
+ * the config register, so we also check for 20Kc.
+ */
+ mips_cpu.icache.flags = MIPS_CACHE_VTAG_CACHE;
+ printk("Virtually tagged I-cache detected\n");
+ }
}
printk("Primary instruction cache %dkb, linesize %d bytes (%d ways)\n",
icache_size >> 10, ic_lsize, mips_cpu.icache.ways);
@@ -467,6 +483,7 @@
unsigned long config1;
unsigned int lsize;
+ mips_cpu.dcache.flags = 0;
if (!(config & (1 << 31))) {
/*
* Not a MIPS64 complainant CPU.
Index: include/asm-mips/cache.h
===================================================================
RCS file: /home/cvs/linux/include/asm-mips/cache.h,v
retrieving revision 1.10.2.1
diff -u -r1.10.2.1 cache.h
--- include/asm-mips/cache.h 27 Jun 2002 14:21:23 -0000 1.10.2.1
+++ include/asm-mips/cache.h 11 Dec 2002 10:00:22 -0000
@@ -27,6 +27,7 @@
* Flag definitions
*/
#define MIPS_CACHE_NOT_PRESENT 0x00000001
+#define MIPS_CACHE_VTAG_CACHE 0x00000002 /* Virtually tagged cache. */
#if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_R6000) || defined(CONFIG_CPU_TX39XX)
#define L1_CACHE_BYTES 16
Index: include/asm-mips/mips32_cache.h
===================================================================
RCS file: /home/cvs/linux/include/asm-mips/mips32_cache.h,v
retrieving revision 1.2.2.1
diff -u -r1.2.2.1 mips32_cache.h
--- include/asm-mips/mips32_cache.h 5 Aug 2002 23:53:37 -0000 1.2.2.1
+++ include/asm-mips/mips32_cache.h 11 Dec 2002 10:00:22 -0000
@@ -37,45 +37,70 @@
static inline void flush_icache_line_indexed(unsigned long addr)
{
- __asm__ __volatile__(
- ".set noreorder\n\t"
- ".set mips3\n\t"
- "cache %1, (%0)\n\t"
- ".set mips0\n\t"
- ".set reorder"
- :
- : "r" (addr),
- "i" (Index_Invalidate_I));
+ unsigned long waystep = icache_size/mips_cpu.icache.ways;
+ unsigned int way;
+
+ for (way = 0; way < mips_cpu.icache.ways; way++)
+ {
+ __asm__ __volatile__(
+ ".set noreorder\n\t"
+ ".set mips3\n\t"
+ "cache %1, (%0)\n\t"
+ ".set mips0\n\t"
+ ".set reorder"
+ :
+ : "r" (addr),
+ "i" (Index_Invalidate_I));
+
+ addr += waystep;
+ }
}
static inline void flush_dcache_line_indexed(unsigned long addr)
{
- __asm__ __volatile__(
- ".set noreorder\n\t"
- ".set mips3\n\t"
- "cache %1, (%0)\n\t"
- ".set mips0\n\t"
- ".set reorder"
- :
- : "r" (addr),
- "i" (Index_Writeback_Inv_D));
+ unsigned long waystep = dcache_size/mips_cpu.dcache.ways;
+ unsigned int way;
+
+ for (way = 0; way < mips_cpu.dcache.ways; way++)
+ {
+ __asm__ __volatile__(
+ ".set noreorder\n\t"
+ ".set mips3\n\t"
+ "cache %1, (%0)\n\t"
+ ".set mips0\n\t"
+ ".set reorder"
+ :
+ : "r" (addr),
+ "i" (Index_Writeback_Inv_D));
+
+ addr += waystep;
+ }
}
static inline void flush_scache_line_indexed(unsigned long addr)
{
- __asm__ __volatile__(
- ".set noreorder\n\t"
- ".set mips3\n\t"
- "cache %1, (%0)\n\t"
- ".set mips0\n\t"
- ".set reorder"
- :
- : "r" (addr),
- "i" (Index_Writeback_Inv_SD));
+ unsigned long waystep = scache_size/mips_cpu.scache.ways;
+ unsigned int way;
+
+ for (way = 0; way < mips_cpu.scache.ways; way++)
+ {
+ __asm__ __volatile__(
+ ".set noreorder\n\t"
+ ".set mips3\n\t"
+ "cache %1, (%0)\n\t"
+ ".set mips0\n\t"
+ ".set reorder"
+ :
+ : "r" (addr),
+ "i" (Index_Writeback_Inv_SD));
+
+ addr += waystep;
+ }
}
static inline void flush_icache_line(unsigned long addr)
{
+
__asm__ __volatile__(
".set noreorder\n\t"
".set mips3\n\t"
@@ -210,12 +235,17 @@
static inline void blast_dcache_page_indexed(unsigned long page)
{
- unsigned long start = page;
- unsigned long end = (start + PAGE_SIZE);
-
- while(start < end) {
- cache_unroll(start,Index_Writeback_Inv_D);
- start += dc_lsize;
+ unsigned long start;
+ unsigned long end = (page + PAGE_SIZE);
+ unsigned long waystep = dcache_size/mips_cpu.dcache.ways;
+ unsigned int way;
+
+ for (way = 0; way < mips_cpu.dcache.ways; way++) {
+ start = page + way*waystep;
+ while(start < end) {
+ cache_unroll(start,Index_Writeback_Inv_D);
+ start += dc_lsize;
+ }
}
}
@@ -243,12 +273,17 @@
static inline void blast_icache_page_indexed(unsigned long page)
{
- unsigned long start = page;
- unsigned long end = (start + PAGE_SIZE);
-
- while(start < end) {
- cache_unroll(start,Index_Invalidate_I);
- start += ic_lsize;
+ unsigned long start;
+ unsigned long end = (page + PAGE_SIZE);
+ unsigned long waystep = icache_size/mips_cpu.icache.ways;
+ unsigned int way;
+
+ for (way = 0; way < mips_cpu.icache.ways; way++) {
+ start = page + way*waystep;
+ while(start < end) {
+ cache_unroll(start,Index_Invalidate_I);
+ start += ic_lsize;
+ }
}
}
@@ -276,12 +311,17 @@
static inline void blast_scache_page_indexed(unsigned long page)
{
- unsigned long start = page;
- unsigned long end = page + PAGE_SIZE;
-
- while(start < end) {
- cache_unroll(start,Index_Writeback_Inv_SD);
- start += sc_lsize;
+ unsigned long start;
+ unsigned long end = (page + PAGE_SIZE);
+ unsigned long waystep = scache_size/mips_cpu.scache.ways;
+ unsigned int way;
+
+ for (way = 0; way < mips_cpu.scache.ways; way++) {
+ start = page + way*waystep;
+ while(start < end) {
+ cache_unroll(start,Index_Writeback_Inv_SD);
+ start += sc_lsize;
+ }
}
}
Index: include/asm-mips64/cache.h
===================================================================
RCS file: /home/cvs/linux/include/asm-mips64/cache.h,v
retrieving revision 1.7.2.3
diff -u -r1.7.2.3 cache.h
--- include/asm-mips64/cache.h 24 Jul 2002 16:12:11 -0000 1.7.2.3
+++ include/asm-mips64/cache.h 11 Dec 2002 10:00:22 -0000
@@ -27,6 +27,7 @@
* Flag definitions
*/
#define MIPS_CACHE_NOT_PRESENT 0x00000001
+#define MIPS_CACHE_VTAG_CACHE 0x00000002 /* Virtually tagged cache. */
#if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_R6000) || defined(CONFIG_CPU_TX39XX)
#define L1_CACHE_BYTES 16
^ permalink raw reply
* Re: CD Writing in 2.5.51
From: Markus Plail @ 2002-12-11 11:02 UTC (permalink / raw)
To: linux-kernel
In-Reply-To: <1039603261.531.6.camel@nirvana>
* mdew writes:
>awesome, i got it to work, thanks.. tho I'm now trying to enable the
>DMA on the drives... (unsuccessfully)
>/dev/hda == CDRW (24/12/40)
>/dev/hdb == DVDROM (8/40)
>/dev/hda:
> setting using_dma to 1 (on)
> HDIO_SET_DMA failed: Operation not permitted
> using_dma = 0 (off)
>nirvana:~# hdparm -d1 /dev/hdb
>/dev/hdb:
> setting using_dma to 1 (on)
> HDIO_SET_DMA failed: Operation not permitted
> using_dma = 0 (off)
Perhaps CONFIG_IDEDMA_ONLYDISK is set? Or you don't have compiled in
the specific driver for your chipset?
regards
Markus
^ permalink raw reply
* Re: Why does C3 CPU downgrade in kernel 2.4.20?
From: Dave Jones @ 2002-12-11 10:58 UTC (permalink / raw)
To: Denis Vlasenko; +Cc: Daniel Egger, Joseph, linux-kernel@vger.kernel.org
In-Reply-To: <200212110829.gBB8Tja05013@Port.imtp.ilyichevsk.odessa.ua>
On Wed, Dec 11, 2002 at 11:19:23AM -0200, Denis Vlasenko wrote:
> > Prolly I would have to do more benchmarking to find out about
> > aligment advantages.
> I heard cmovs are microcoded in Centaurs.
> s...l...o...w...
Hardly surprising given that the chip isn't targetted at the performance
market.
Dave
^ permalink raw reply
* [FBDEV]: Framebuffer driver for Intel 810/815 chipsets
From: Antonino Daplas @ 2002-12-11 10:46 UTC (permalink / raw)
To: James Simmons; +Cc: Linux Fbdev development list, Linux Kernel Mailing List
James,
It seems the fbdev framework is stable enough, and already in the
development tree. So, I'm submitting a driver for the Intel 810/815 for
review and perhaps inclusion to your tree (to get more testing), and
hopefully merge with Linus's tree.
The patch is against linux-2.5.51, but will not work yet because of 2
reasons:
1. agpgart is not working for the i810
2. support for early agp initialization needs to be added.
Once #1 is fixed, the driver should work as a module. And once #2 gets
included, the driver can be compiled statically. Dave Jones (thanks for
the help, by the way) has already #2 in his tree (tested and works), and
is currently working on #1 (I have a hacked version at home).
The driver should be compliant with fbdev-2.5, and should support most
if not all features that are to be expected (modularity, state saving
and restoring, full hardware support, etc). One thing also that's very
important for many people is that the driver will work with XFree86 with
its native i810 drivers without further modification, and quite stably
too.
The patch is at
http://i810fb.sourceforge.net/linux-2.5.51-i810fb.diff.gz
Thanks,
Tony
^ permalink raw reply
* Re: [TRIVIAL PATCH] FBDEV: Small impact patch for fbdev
From: Antonino Daplas @ 2002-12-11 10:45 UTC (permalink / raw)
To: James Simmons; +Cc: Linux Fbdev development list, Linux Kernel Mailing List
In-Reply-To: <Pine.LNX.4.33.0212102155280.2617-100000@maxwell.earthlink.net>
On Wed, 2002-12-11 at 10:59, James Simmons wrote:
>
> > Here's a diff to correct several small things that escaped through the
> > cracks.
>
> Ug. Now that a wider test base is being done and more drivers actually
> compile we are going to see more cracks.
>
> > 1. The YNOMOVE scrollmode for non-accelerated drivers is just very slow
> > because of a lot of block moves (leads to slow and jerky scrolling in
> > vesafb with ypanning enabled). Depending on var->accel_flags, set the
> > scrollmode to either YREDRAW or YNOMOVE. For drivers with hardware
> > acceleration, set var->accel_flags to nonzero for max speed.
>
I think the scrollmode is better determined on a case-to-case basis, but
the above should be a good enough differentiation.
> Thanks. I have had several emails complementing the speed improvements.
> Another speed boost will be a plus.
>
Yes, probably not much at low pixel depths, but at high pixel depths and
resolutions, 2.5 should be much better than 2.4 (even 2-3x faster in
some cases). And for drivers with hardware acceleration, whatever the
color depth, it will be much better because they were written
specifically for them.
Personally, the performance gain is just a minor side-effect. The
greatest benefit in all this is the separation of the fbdev-fbcon
structure into components, where each component has a defined use and
function, and very much independent of each other. This really makes it
easier to understand the code, port or write drivers too it, write
smaller and more efficient code, and even debug. And you basically did
all this, so great job :-)
> > 2. fb_pan_display() always returns an error. User apps will
complain.
>
> Fixed. Actually I used the following code.
>
> int fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
> {
> int xoffset = var->xoffset;
> int yoffset = var->yoffset;
> int err;
>
> if (xoffset < 0 || yoffset < 0 || info->fbops->fb_pan_display ||
> xoffset + info->var.xres > info->var.xres_virtual ||
> yoffset + info->var.yres > info->var.yres_virtual)
> return -EINVAL;
> if ((err = info->fbops->fb_pan_display(var, info)))
> return err;
> info->var.xoffset = var->xoffset;
> info->var.yoffset = var->yoffset;
> if (var->vmode & FB_VMODE_YWRAP)
>
> instead. The reason is I didn't like the idea of xoffset and yoffset being
> changed even if the hardware panning function failed. Comments?
>
Yes, I think thats better.
Tony
^ permalink raw reply
* Re: Linux 2.4.21-pre1 - unresolved symbols: scx200_gpio.o
From: Eyal Lebedinsky @ 2002-12-11 10:50 UTC (permalink / raw)
To: Marcelo Tosatti; +Cc: lkml
In-Reply-To: <Pine.LNX.4.50L.0212101834240.23096-100000@freak.distro.conectiva>
depmod: *** Unresolved symbols in
/lib/modules/2.4.21-pre1/kernel/drivers/char/scx200_gpio.o
depmod: scx200_gpio_configure
depmod: scx200_gpio_base
depmod: scx200_gpio_shadow
Practically everything was built as a module.
--
Eyal Lebedinsky (eyal@eyal.emu.id.au) <http://samba.org/eyal/>
^ permalink raw reply
* Re: CD Writing in 2.5.51
From: mdew @ 2002-12-11 10:40 UTC (permalink / raw)
To: Markus Plail; +Cc: Linux Kernel
In-Reply-To: <87adjc3n30.fsf@web.de>
On Wed, 2002-12-11 at 22:46, Markus Plail wrote:
> * mdew writes:
> >On Wed, 2002-12-11 at 22:34, Markus Plail wrote:
> >>You don't need any additional modules. Just don't activate ide-scsi by
> >>either not appending ide-scsi/scsi=hdX or not compiling ide-scsi
> >>support in the kernel.
> >can i completely remove scsi support then? (I dont have any scsi device)
>
> Yes.
awesome, i got it to work, thanks.. tho I'm now trying to enable the DMA
on the drives... (unsuccessfully)
/dev/hda == CDRW (24/12/40)
/dev/hdb == DVDROM (8/40)
nirvana:~# hdparm /dev/hda
/dev/hda:
HDIO_GET_MULTCOUNT failed: Inappropriate ioctl for device
IO_support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 1 (on)
readahead = 256 (on)
HDIO_GETGEO failed: Inappropriate ioctl for device
nirvana:~# hdparm -d1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)
nirvana:~# hdparm -d1 /dev/hdb
/dev/hdb:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)
Linux version 2.5.51 (root@nirvana) (gcc version 3.2.2 20021202 (Debian
prerelease)) #3 Wed Dec 11 23:04:28 NZDT 2002
Video mode to be used for restore is ffff
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000017ff0000 (usable)
BIOS-e820: 0000000017ff0000 - 0000000017ff3000 (ACPI NVS)
BIOS-e820: 0000000017ff3000 - 0000000018000000 (ACPI data)
BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
383MB LOWMEM available.
On node 0 totalpages: 98288
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 94192 pages, LIFO batch:16
HighMem zone: 0 pages, LIFO batch:1
Building zonelist for node : 0
Kernel command line: BOOT_IMAGE=Linux25 root=2102
Local APIC disabled by BIOS -- reenabling.
Found and enabled local APIC!
Initializing CPU#0
Detected 599.229 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 1183.74 BogoMIPS
Memory: 385044k/393152k available (2329k kernel code, 7352k reserved,
526k 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: Before vendor init, caps: 0383fbff 00000000 00000000, vendor = 0
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 128K
CPU: After vendor init, caps: 0383fbff 00000000 00000000 00000000
CPU: After generic, caps: 0383fbff 00000000 00000000 00000000
CPU: Common caps: 0383fbff 00000000 00000000 00000000
CPU: Intel Celeron (Coppermine) stepping 03
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
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 599.0313 MHz.
..... host bus clock speed is 66.0590 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 0xfb240, 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)
Linux Plug and Play Support v0.93 (c) Adam Belay
PnPBIOS: Found PnP BIOS installation structure at 0xc00fbe30
PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0xbe58, dseg 0xf0000
PnPBIOS: 14 nodes reported by PnP BIOS; 14 recorded by driver
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 PIIX [8086/7110] at 00:07.0
aio_setup: sizeof(struct page) = 40
[c13de040] eventpoll: successfully initialized.
Journalled Block Device driver loaded
udf: registering filesystem
SGI XFS for Linux 2.5.51 with ACLs, realtime, no debug enabled
Limiting direct PCI/PCI transfers.
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE]
parport0: irq 7 detected
parport0: cpp_mux: aa55f00f52ad51(3e)
parport0: cpp_daisy: aa5500ff(38)
parport0: assign_addrs: aa5500ff(38)
parport0: cpp_mux: aa55f00f52ad51(3e)
parport0: cpp_daisy: aa5500ff(38)
parport0: assign_addrs: aa5500ff(38)
pty: 256 Unix98 ptys configured
lp0: using parport0 (polling).
Linux agpgart interface v1.0 (c) Dave Jones
agpgart: Detected Intel 440BX chipset
agpgart: Maximum main memory to use for agp memory: 321M
agpgart: AGP aperture is 64M @ 0xe0000000
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with
idebus=xx
PIIX4: IDE controller at PCI slot 00:07.1
PIIX4: chipset revision 1
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:DMA
hda: ASUS CRW-2410A, ATAPI CD/DVD-ROM drive
hdb: ASUS DVD-ROM E608, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
PDC20262: IDE controller at PCI slot 00:0e.0
PCI: Found IRQ 9 for device 00:0e.0
PDC20262: chipset revision 1
PDC20262: not 100% native mode: will probe irqs later
PDC20262: ROM enabled at 0xe7000000
PDC20262: (U)DMA Burst Bit ENABLED Primary PCI Mode Secondary PCI Mode.
ide2: BM-DMA at 0xc000-0xc007, BIOS settings: hde:DMA, hdf:pio
ide3: BM-DMA at 0xc008-0xc00f, BIOS settings: hdg:DMA, hdh:DMA
hde: ST330630A, ATA DISK drive
ide2 at 0xb000-0xb007,0xb402 on irq 9
hde: setmax LBA 59777641, native 59777640
hde: 59777640 sectors (30606 MB) w/2048KiB Cache, CHS=59303/16/63,
UDMA(66)
hde: hde1 hde2 hde3 hde4 < hde5 >
drivers/usb/host/uhci-hcd.c: USB Universal Host Controller Interface
driver v2.0
uhci-hcd 00:07.2: Intel Corp. 82371AB/EB/MB PIIX4
uhci-hcd 00:07.2: irq 10, io base 0000a000
drivers/usb/core/hcd.c: new USB bus registered, assigned bus number 1
drivers/usb/core/hub.c: USB hub found at 0
drivers/usb/core/hub.c: 2 ports detected
device class 'input': registering
register interface 'mouse' with class 'input'
mice: PS/2 mouse device common for all mice
register interface 'event' with class 'input'
serio: i8042 AUX port at 0x60,0x64 irq 12
input: AT Set 2 keyboard on isa0060/serio0
serio: i8042 KBD port at 0x60,0x64 irq 1
Advanced Linux Sound Architecture Driver Version 0.9.0rc5 (Sun Nov 10
19:48:18 2002 UTC).
request_module[snd-card-0]: not ready
request_module[snd-card-1]: not ready
request_module[snd-card-2]: not ready
request_module[snd-card-3]: not ready
request_module[snd-card-4]: not ready
request_module[snd-card-5]: not ready
request_module[snd-card-6]: not ready
request_module[snd-card-7]: not ready
PCI: Found IRQ 5 for device 00:09.0
ALSA device list:
#0: Yamaha DS-XG PCI (YMF744) at 0xd8816000, irq 5
NET4: Linux TCP/IP 1.0 for NET4.0
IP: routing cache hash table of 4096 buckets, 32Kbytes
TCP: Hash tables configured (established 32768 bind 65536)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
UDF-fs DEBUG fs/udf/lowlevel.c:65:udf_get_last_session:
CDROMMULTISESSION not supported: rc=-25
UDF-fs DEBUG fs/udf/super.c:1471:udf_fill_super: Multi-session=0
UDF-fs DEBUG fs/udf/super.c:459:udf_vrs: Starting at sector 16 (2048
byte sectors)
UDF-fs: No VRS found
XFS mounting filesystem ide2(33,2)
Ending clean XFS mount for filesystem: ide2(33,2)
VFS: Mounted root (xfs filesystem) readonly.
Freeing unused kernel memory: 308k freed
drivers/usb/core/hub.c: new USB device 00:07.2-1, assigned address 2
drivers/usb/core/hub.c: USB hub found at 1
drivers/usb/core/hub.c: 4 ports detected
drivers/usb/core/hub.c: new USB device 00:07.2-2, assigned address 3
drivers/usb/core/hub.c: USB hub found at 2
drivers/usb/core/hub.c: 4 ports detected
Adding 642592k swap on /dev/hde3. Priority:-1 extents:1
drivers/usb/core/hub.c: new USB device 00:07.2-2.1, assigned address 4
drivers/usb/core/hub.c: new USB device 00:07.2-1.1, assigned address 5
drivers/usb/core/hub.c: new USB device 00:07.2-1.3, assigned address 6
Module crc32 cannot be unloaded due to unsafe usage in lib/crc32.c:554
8139too Fast Ethernet driver 0.9.26
PCI: Found IRQ 10 for device 00:0b.0
eth0: RealTek RTL8139 Fast Ethernet at 0xd887a000, 00:30:4f:0b:43:a8,
IRQ 10
eth0: Identified 8139 chip type 'RTL-8139C'
drivers/usb/core/usb.c: registered new driver usbscanner
drivers/usb/image/scanner.c: 0.4.6:USB Scanner Driver
input: A4Tech USB Optical Mouse on usb-00:07.2-1.1
drivers/usb/core/usb.c: registered new driver usb_mouse
drivers/usb/input/usbmouse.c: v1.6:USB HID Boot Protocol mouse driver
NTFS driver 2.1.0 [Flags: R/O MODULE].
NTFS volume version 3.0.
eth0: Setting half-duplex based on auto-negotiated partner ability 0000.
Module smbfs cannot be unloaded due to unsafe usage in
fs/smbfs/smbiod.c:285
hda: DMA disabled
end_request: I/O error, dev hda, sector 0
hda: ATAPI 40X CD-ROM CD-R/RW drive, 2048kB Cache
Uniform CD-ROM driver Revision: 3.12
hdb: DMA disabled
end_request: I/O error, dev hdb, sector 0
hdb: ATAPI 40X DVD-ROM drive, 128kB Cache
^ permalink raw reply
* Re: ax25 kernel problem sometimes accur
From: Tomi Manninen OH2BNS @ 2002-12-11 10:29 UTC (permalink / raw)
To: Ralf Baechle DO1GRB; +Cc: linux-hams
In-Reply-To: <20021211024019.A28178@linux-mips.org>
On Wed, 11 Dec 2002, Ralf Baechle DO1GRB wrote:
> On Tue, Dec 10, 2002 at 04:09:20PM +0200, Tomi Manninen OH2BNS wrote:
>
> > > I consider everything I'm currently working on as pure bug fix. As such
> > > they're not affected by the feature freeze.
> >
> > Agreed.
> >
> > Anyway, what is the situation now? Are there still lots of known races
> > unfixed in your tree?
>
> The whole job is much bigger than you may assume. I've removed
> SOCKOPS_WRAP which so far was forcing single threaded execution of most of
> the AX.25 code. I did that because for 2.5 the removal of SOCKOPS_WRAP
> the entire kernel was on the agenda. This didn't happen yet but I'm
> removed it's use from AX.25 & Co. anyway. As the result the entire locking
> work isn't just plugging a few holes which would have been bad enough, it's
> completly redoing the locking stuff from scratch.
Ok, I understand. Anyway some kind of progress report would be nice. Even
something like: "don't hold your breath", if that is appropriate... :-)
I have gotten surprisingly many private queries about this lately, so to
recap what I have understood so far: the 2.4 code is bad, full of races,
works only if treated nicely. Your SOCKOPS_WRAP removal obviously makes
things even worse until you redo the locking stuff. When that is done we
have a perfect ax.25 stack again. Right? ;-)
--
Tomi Manninen Internet: oh2bns@sral.fi
OH2BNS AX.25: oh2bns@oh2rbi.fin.eu
KP20ME04 Amprnet: oh2bns@oh2rbi.ampr.org
^ permalink raw reply
* Re: "get_cnode failed" error
From: Alexandre Ratti @ 2002-12-11 10:28 UTC (permalink / raw)
To: Oleg Drokin; +Cc: reiserfs-list, mason
In-Reply-To: <20021211102647.A6065@namesys.com>
Hi Oleg,
At 10:26 11/12/2002 +0300, Oleg Drokin wrote:
>On Tue, Dec 10, 2002 at 08:55:08PM +0100, Alexandre Ratti wrote:
> > The FS looks OK, but I'm curious. What does this error mean? It is serious?
>
>This error means there was some journaling code screwup. So FS panicked
>before it could do any harm to on-disk data.
>What does your script does with cp? Do you have at least some aproximate
>ideas on what it copied and from where to where?
Yes, this is a backup script in Python. It first duplicate an existing
directory tree into a new tree using hard links, then it synchronise the
new tree with files located on another server using rsync. This create an
incremental backup. See [1] for theory and [2] for code.
[1] http://www.mikerubel.org/computers/rsync_snapshots/
[2] http://web2.airmail.net/lelie/roller.py
I think the script was running "cp -al old_dir new_dir" to duplicate a
directory tree (16 GB) on the same partition. This is a large (120 GB)
partition I use to back up files; it is 30% full.
The script ran 99 times without any glitch. Yesterday, after the error, I
upgraded the system to 2.4.19 and I ran the script again; it ran with no
error.
Cheers.
Alexandre
> > Dec 10 00:18:39 p120 kernel: <0>get_cnode failed!
> > Dec 10 00:18:40 p120 kernel: invalid operand: 0000
> > Dec 10 00:18:40 p120 kernel: CPU: 0
> > Dec 10 00:18:40 p120 kernel: EIP: 0010:[reiserfs_panic+41/88] Not
> > tainted
> > Dec 10 00:18:40 p120 kernel: EFLAGS: 00010282
> > Dec 10 00:18:40 p120 kernel: eax: 00000015 ebx: c0215ada ecx:
> > c087e000 edx: c118da80
> > Dec 10 00:18:40 p120 kernel: esi: c13be000 edi: 00000000 ebp:
> > c13be000 esp: c087fe30
> > Dec 10 00:18:40 p120 kernel: ds: 0018 es: 0018 ss: 0018
> > Dec 10 00:18:40 p120 kernel: Process cp (pid: 7360, stackpage=c087f000)
> > Dec 10 00:18:40 p120 kernel: Stack: c0212f5a c02909e0 c0215ada c087fe54
> > c087ff2c c20d7140 c01813d9 c13be000
> > Dec 10 00:18:40 p120 kernel: c0215ada 0141411a c20d7140 c087fe98
> > c087ff08 c016cfb0 ffffffff 00000000
> > Dec 10 00:18:40 p120 kernel: c016d11b c087ff2c c13be000 c20d7140
> > c087feb0 c0392460 c0392460 c087ff2c
> > Dec 10 00:18:40 p120 kernel: Call Trace: [journal_mark_dirty+501/772]
> > [update_st at_data+224/232] [reiserfs_update_sd+355/380]
> > [reiserfs_link+199/256] [vfs_link+137/188]
> > Dec 10 00:18:41 p120 kernel: [sys_link+212/308] [sys_lstat64+100/112]
> > [system_call+51/64]
> > Dec 10 00:18:41 p120 kernel:
> > Dec 10 00:18:41 p120 kernel: Code: 0f 0b 68 e0 09 29 c0 85 f6 74 11 31 c0
> > 66 8b 46 08 50 e8 88
^ permalink raw reply
* Re: [Swsusp] Re: new DRI resume binary snapshots and patches available
From: Charl P. Botha @ 2002-12-11 10:22 UTC (permalink / raw)
To: swsusp-LcL5texQODR2DW0IdvIQ2g
Cc: dri-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
In-Reply-To: <m2el8oopys.fsf-I+/jYW0I6Y1pcJYJbGLfGQ@public.gmane.org>
On Wed, 2002-12-11 at 10:38, Juan Quintela wrote:
> could you told me what X version against are your dri
> patches?
>
> I am having a bad time (not being an XFree hacker) to merge the X part
> of your patch (the kernel patch was a no brainer).
>
> Basically my problem is that there is not:
> - ati/radeon_common.h file (and I didn't found any of the other
> DRM_RADEON_* diffs).
> - in the radeon_dri.c::RADEONDRIResume() has a call to
> + _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_RESUME);
>
> I am completely unable to find that command in my XFree tree :(
>
> I am using XFree86-4.2.1-11mdk. We used the gatos patch, but old ati
> code don't have either that function :(
I have clarified the web page (http://cpbotha.net/dri_resume.html)
somewhat. The patch is very specifically for DRI CVS and NOT for
4.2.x. I don't think it'll work on 4.2.1 to tell you the truth.
Soon I am going to make sure that it applies cleanly on XFree86 HEAD CVS
as well for possible submission into the repository. Those will be your
two options then: either XFree86 DRI CVS or XFree86 HEAD CVS.
Thanks,
Charl
--
charl p. botha http://cpbotha.net/ http://visualisation.tudelft.nl/
-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility
Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
^ permalink raw reply
* Re: Anti-virus for Sendmail
From: Nicolas Costes @ 2002-12-11 10:18 UTC (permalink / raw)
To: linux-admin
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Le Mercredi 11 Décembre 2002 02:30, dashielljt a écrit :
> Does anyone know of an antivirus package for linux that doesn't need any
> gui interface to run? I'm using text only here since my screen reader
> likes it that way. If the screen reader doesn't work on this system
> either speakup or emacspeak the computer isn't providing me any useful
> output.
Have you tried Amavis (http://www.amavis.org/) ???
It works as an interface between sendmail (Or another MTA, like postfix) and
antivirus software. I automatically recognizes those one, if they're already
installed. It's better to use the "amavisd-new" version (or amavisd).
- - --
,,
( °> Nicolas Costes
/||\ IUT de La Roche / Yon
( ^ ) Nayco@iut-laroche.univ-nantes.fr
^ ^ http://luxregina.free.fr
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
iD8DBQE99xDYDeRAHGw6DGURAkhmAJ9JDQDi8jhgX/Mc3Zxgc0w/7qkYOwCgmKG1
1Ncnt7PQ9F6plG9kKOsEwek=
=atSa
-----END PGP SIGNATURE-----
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ 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.