* NFS mounted rootfs possible via PCMCIA NIC ? @ 2002-12-11 21:53 Andreas Schaufler 2002-12-11 22:34 ` Andrew Morton 2002-12-11 23:12 ` Alan Cox 0 siblings, 2 replies; 8+ messages in thread From: Andreas Schaufler @ 2002-12-11 21:53 UTC (permalink / raw) To: Linux Kernel Mailing List -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello list, I am trying to configure a notebook with a PCMCIA NIC to boot over network. (kernel 2.4.20) In order to accomplish this I passed over the neccessary configuration paramters through the boot loader (ip, root, nfsroot) The problem is: When the kernel is booting it is trying to configure the Network interface, before it has been activated. Thus my question is: Is it possible somehow to change the order by some configuration parameter ?!? Thanks for answers in advance - -Andreas -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD4DBQE997P0hFLSFNIrGmsRAjMpAJitzpgKyTJDg6ubFy17u9GA+EZEAJ9kgBKv k7Euyw1aT6/6ORWhzPjZwg== =AmIZ -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS mounted rootfs possible via PCMCIA NIC ? 2002-12-11 21:53 NFS mounted rootfs possible via PCMCIA NIC ? Andreas Schaufler @ 2002-12-11 22:34 ` Andrew Morton 2002-12-12 17:29 ` Andreas Schaufler 2002-12-11 23:12 ` Alan Cox 1 sibling, 1 reply; 8+ messages in thread From: Andrew Morton @ 2002-12-11 22:34 UTC (permalink / raw) To: Andreas Schaufler; +Cc: Linux Kernel Mailing List Andreas Schaufler wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hello list, > > I am trying to configure a notebook with a PCMCIA NIC to boot over network. > (kernel 2.4.20) Nope. The kernel does the NFS thing before bringing up cardbus. This patch worked, back in the 2.4.17 days. It also fixes some cardbus bugs. I don't immediately recall what they were. drivers/pcmcia/Makefile | 3 + drivers/pcmcia/ds.c | 13 ++----- drivers/pcmcia/yenta.c | 85 ++++++++++++++++++++++-------------------------- init/main.c | 3 - 4 files changed, 45 insertions(+), 59 deletions(-) --- 24/drivers/pcmcia/ds.c~pcmcia-ip-autoconf Wed Dec 11 14:30:56 2002 +++ 24-akpm/drivers/pcmcia/ds.c Wed Dec 11 14:30:56 2002 @@ -968,14 +968,7 @@ int __init init_pcmcia_ds(void) return 0; } -#ifdef MODULE - -int __init init_module(void) -{ - return init_pcmcia_ds(); -} - -void __exit cleanup_module(void) +void __exit cleanup_pcmcia_ds(void) { int i; #ifdef CONFIG_PROC_FS @@ -990,4 +983,6 @@ void __exit cleanup_module(void) kfree(socket_table); } -#endif +module_init(init_pcmcia_ds); +module_exit(cleanup_pcmcia_ds); + --- 24/drivers/pcmcia/Makefile~pcmcia-ip-autoconf Wed Dec 11 14:30:56 2002 +++ 24-akpm/drivers/pcmcia/Makefile Wed Dec 11 14:30:56 2002 @@ -22,7 +22,7 @@ ifeq ($(CONFIG_CARDBUS),y) endif ifeq ($(CONFIG_PCMCIA),y) - obj-y := cistpl.o rsrc_mgr.o bulkmem.o ds.o cs.o + obj-y := cistpl.o rsrc_mgr.o bulkmem.o cs.o ifeq ($(CONFIG_CARDBUS),y) obj-y += cardbus.o yenta.o pci_socket.o endif @@ -38,6 +38,7 @@ ifeq ($(CONFIG_PCMCIA),y) ifeq ($(CONFIG_HD64465_PCMCIA),y) obj-y += hd64465_ss.o endif + obj-y += ds.o else ifeq ($(CONFIG_PCMCIA),m) obj-m := pcmcia_core.o ds.o --- 24/drivers/pcmcia/yenta.c~pcmcia-ip-autoconf Wed Dec 11 14:30:56 2002 +++ 24-akpm/drivers/pcmcia/yenta.c Wed Dec 11 14:30:56 2002 @@ -574,38 +574,6 @@ static void yenta_get_socket_capabilitie printk("Yenta IRQ list %04x, PCI irq%d\n", socket->cap.irq_mask, socket->cb_irq); } -extern void cardbus_register(pci_socket_t *socket); - -/* - * 'Bottom half' for the yenta_open routine. Allocate the interrupt line - * and register the socket with the upper layers. - */ -static void yenta_open_bh(void * data) -{ - pci_socket_t * socket = (pci_socket_t *) data; - - /* It's OK to overwrite this now */ - socket->tq_task.routine = yenta_bh; - - if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, SA_SHIRQ, socket->dev->name, socket)) { - /* No IRQ or request_irq failed. Poll */ - socket->cb_irq = 0; /* But zero is a valid IRQ number. */ - socket->poll_timer.function = yenta_interrupt_wrapper; - socket->poll_timer.data = (unsigned long)socket; - socket->poll_timer.expires = jiffies + HZ; - add_timer(&socket->poll_timer); - } - - /* Figure out what the dang thing can do for the PCMCIA layer... */ - yenta_get_socket_capabilities(socket, isa_interrupts); - printk("Socket status: %08x\n", cb_readl(socket, CB_SOCKET_STATE)); - - /* Register it with the pcmcia layer.. */ - cardbus_register(socket); - - MOD_DEC_USE_COUNT; -} - static void yenta_clear_maps(pci_socket_t *socket) { int i; @@ -823,6 +791,8 @@ static struct cardbus_override_struct { #define NR_OVERRIDES (sizeof(cardbus_override)/sizeof(struct cardbus_override_struct)) +extern void cardbus_register(pci_socket_t *socket); + /* * Initialize a cardbus controller. Make sure we have a usable * interrupt, and that we can map the cardbus area. Fill in the @@ -832,15 +802,19 @@ static int yenta_open(pci_socket_t *sock { int i; struct pci_dev *dev = socket->dev; + int retval = -1; + int polling = 0; + + MOD_INC_USE_COUNT; /* * Do some basic sanity checking.. */ if (pci_enable_device(dev)) - return -1; + goto fail; if (!pci_resource_start(dev, 0)) { printk("No cardbus resource!\n"); - return -1; + goto fail; } /* @@ -849,7 +823,7 @@ static int yenta_open(pci_socket_t *sock */ socket->base = ioremap(pci_resource_start(dev, 0), 0x1000); if (!socket->base) - return -1; + goto fail; yenta_config_init(socket); @@ -867,24 +841,43 @@ static int yenta_open(pci_socket_t *sock if (dev->vendor == d->vendor && dev->device == d->device) { socket->op = d->op; if (d->op->open) { - int retval = d->op->open(socket); - if (retval < 0) - return retval; + int ret = d->op->open(socket); + if (ret < 0) { + iounmap(socket->base); + retval = ret; + goto fail; + } } } } - /* Get the PCMCIA kernel thread to complete the - initialisation later. We can't do this here, - because, er, because Linus says so :) - */ - socket->tq_task.routine = yenta_open_bh; + socket->tq_task.routine = yenta_bh; socket->tq_task.data = socket; - MOD_INC_USE_COUNT; - schedule_task(&socket->tq_task); + if (!socket->cb_irq || request_irq(socket->cb_irq, yenta_interrupt, + SA_SHIRQ, socket->dev->name, socket)) { + /* No IRQ or request_irq failed. Poll */ + socket->cb_irq = 0; /* But zero is a valid IRQ number. */ + socket->poll_timer.function = yenta_interrupt_wrapper; + socket->poll_timer.data = (unsigned long)socket; + socket->poll_timer.expires = jiffies + HZ; + polling = 1; + } - return 0; + /* Figure out what the dang thing can do for the PCMCIA layer... */ + yenta_get_socket_capabilities(socket, isa_interrupts); + printk("Socket status: %08x\n", cb_readl(socket, CB_SOCKET_STATE)); + + /* Register it with the pcmcia layer.. */ + cardbus_register(socket); + + if (polling) + add_timer(&socket->poll_timer); + + retval = 0; +fail: + MOD_DEC_USE_COUNT; + return retval; } /* --- 24/init/main.c~pcmcia-ip-autoconf Wed Dec 11 14:30:56 2002 +++ 24-akpm/init/main.c Wed Dec 11 14:30:56 2002 @@ -533,9 +533,6 @@ static void __init do_basic_setup(void) irda_proto_init(); irda_device_init(); /* Must be done after protocol initialization */ #endif -#ifdef CONFIG_PCMCIA - init_pcmcia_ds(); /* Do this last */ -#endif } extern void prepare_namespace(void); _ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS mounted rootfs possible via PCMCIA NIC ? 2002-12-11 22:34 ` Andrew Morton @ 2002-12-12 17:29 ` Andreas Schaufler 2002-12-12 17:35 ` Andrew Morton 0 siblings, 1 reply; 8+ messages in thread From: Andreas Schaufler @ 2002-12-12 17:29 UTC (permalink / raw) To: Andrew Morton; +Cc: Linux Kernel Mailing List -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 > > Hello list, > > > > I am trying to configure a notebook with a PCMCIA NIC to boot over > > network. (kernel 2.4.20) > > Nope. The kernel does the NFS thing before bringing up cardbus. > > This patch worked, back in the 2.4.17 days. It also fixes some > cardbus bugs. I don't immediately recall what they were. I got the 2.4.17 sources and applied the patch. yenta.c and main.c could not be patched automatically, so I tried to apply it by hand line by line. Unfortunately when I boot a kernel compiled witch this modified sources I get an "Unable to handle kernel pagin request at virtual address 0000413d" Maybe this patch is to be used on some Pre Version of 2.4.17 ?!?! regards - -Andreas -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9+MeFhFLSFNIrGmsRAg0HAJ0RBZ/WKDxvv8YXXTLbT7REnqoVowCcC8tL sGgZre0DIZOAdFVW6kn56rg= =23D5 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS mounted rootfs possible via PCMCIA NIC ? 2002-12-12 17:29 ` Andreas Schaufler @ 2002-12-12 17:35 ` Andrew Morton 2002-12-13 20:28 ` Andreas Schaufler 0 siblings, 1 reply; 8+ messages in thread From: Andrew Morton @ 2002-12-12 17:35 UTC (permalink / raw) To: Andreas Schaufler; +Cc: Linux Kernel Mailing List Andreas Schaufler wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > > Hello list, > > > > > > I am trying to configure a notebook with a PCMCIA NIC to boot over > > > network. (kernel 2.4.20) > > > > Nope. The kernel does the NFS thing before bringing up cardbus. > > > > This patch worked, back in the 2.4.17 days. It also fixes some > > cardbus bugs. I don't immediately recall what they were. > > I got the 2.4.17 sources and applied the patch. yenta.c and main.c could not > be patched automatically, so I tried to apply it by hand line by line. > Unfortunately when I boot a kernel compiled witch this modified sources I get > an "Unable to handle kernel pagin request at virtual address 0000413d" > > Maybe this patch is to be used on some Pre Version of 2.4.17 ?!?! > Sorry, that patch was against 2.4.20. It was last tested in 2.4.17. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS mounted rootfs possible via PCMCIA NIC ? 2002-12-12 17:35 ` Andrew Morton @ 2002-12-13 20:28 ` Andreas Schaufler 0 siblings, 0 replies; 8+ messages in thread From: Andreas Schaufler @ 2002-12-13 20:28 UTC (permalink / raw) To: Andrew Morton; +Cc: Linux Kernel Mailing List Am Donnerstag, 12. Dezember 2002 18:35 schrieb Andrew Morton: ... > > > > Maybe this patch is to be used on some Pre Version of 2.4.17 ?!?! > > Sorry, that patch was against 2.4.20. It was last tested in 2.4.17. Ok, thank you very much. It did not patch automatically in 2.4.20 though. But after I applied it manually everything works fine. Now I can use my old Notebook, which has a broken IDE Controller, again :-) best regards from a happy Linux User -Andreas ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS mounted rootfs possible via PCMCIA NIC ? 2002-12-11 21:53 NFS mounted rootfs possible via PCMCIA NIC ? Andreas Schaufler 2002-12-11 22:34 ` Andrew Morton @ 2002-12-11 23:12 ` Alan Cox 2002-12-12 17:29 ` Andreas Schaufler 1 sibling, 1 reply; 8+ messages in thread From: Alan Cox @ 2002-12-11 23:12 UTC (permalink / raw) To: Andreas Schaufler; +Cc: Linux Kernel Mailing List On Wed, 2002-12-11 at 21:53, Andreas Schaufler wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hello list, > > I am trying to configure a notebook with a PCMCIA NIC to boot over network. > (kernel 2.4.20) > In order to accomplish this I passed over the neccessary configuration > paramters through the boot loader (ip, root, nfsroot) > > The problem is: When the kernel is booting it is trying to configure the > Network interface, before it has been activated. PCMCIA relies in part on user space. You can do this, it involves building a large initrd with a dhcp client on it that sets up pcmcia, then nfs mounts stuff, then pivot_root()'s into it. Its not exactly trivial ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS mounted rootfs possible via PCMCIA NIC ? 2002-12-11 23:12 ` Alan Cox @ 2002-12-12 17:29 ` Andreas Schaufler 2002-12-12 21:49 ` H. Peter Anvin 0 siblings, 1 reply; 8+ messages in thread From: Andreas Schaufler @ 2002-12-12 17:29 UTC (permalink / raw) To: Alan Cox; +Cc: Linux Kernel Mailing List ... > PCMCIA relies in part on user space. You can do this, it involves > building a large initrd with a dhcp client on it that sets up pcmcia, > then nfs mounts stuff, then pivot_root()'s into it. Its not exactly > trivial Thanks for your reply. I get the basic idea from what you say. But what do you mean by pivot_root()'ing into it ?!? I'll try Andrew Morton's suggestion first, because it sounds easier. If I can't get it running I'll try your suggestion. regards -Andreas ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: NFS mounted rootfs possible via PCMCIA NIC ? 2002-12-12 17:29 ` Andreas Schaufler @ 2002-12-12 21:49 ` H. Peter Anvin 0 siblings, 0 replies; 8+ messages in thread From: H. Peter Anvin @ 2002-12-12 21:49 UTC (permalink / raw) To: linux-kernel Followup to: <200212121829.46465.andreas.schaufler@gmx.de> By author: Andreas Schaufler <andreas.schaufler@gmx.de> In newsgroup: linux.dev.kernel > > ... > > PCMCIA relies in part on user space. You can do this, it involves > > building a large initrd with a dhcp client on it that sets up pcmcia, > > then nfs mounts stuff, then pivot_root()'s into it. Its not exactly > > trivial > > Thanks for your reply. I get the basic idea from what you say. But what do you > mean by pivot_root()'ing into it ?!? > pivot_root() is a system call which flips the root directory around. See Documentation/initrd.txt. -hpa -- <hpa@transmeta.com> at work, <hpa@zytor.com> in private! "Unix gives you enough rope to shoot yourself in the foot." http://www.zytor.com/~hpa/puzzle.txt <amsp@zytor.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2002-12-13 19:12 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2002-12-11 21:53 NFS mounted rootfs possible via PCMCIA NIC ? Andreas Schaufler 2002-12-11 22:34 ` Andrew Morton 2002-12-12 17:29 ` Andreas Schaufler 2002-12-12 17:35 ` Andrew Morton 2002-12-13 20:28 ` Andreas Schaufler 2002-12-11 23:12 ` Alan Cox 2002-12-12 17:29 ` Andreas Schaufler 2002-12-12 21:49 ` H. Peter Anvin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox