On 8/2/05, Juergen Lock <[EMAIL PROTECTED]> wrote: > On Mon, Aug 01, 2005 at 05:30:47PM +0800, Mars G. Miro wrote: > > On 8/1/05, Mars G. Miro <[EMAIL PROTECTED]> wrote: > > > On 8/1/05, Mars G. Miro <[EMAIL PROTECTED]> wrote: > > > > On 7/30/05, Mars G. Miro <[EMAIL PROTECTED]> wrote: > > > > > On 7/30/05, Jung-uk Kim <[EMAIL PROTECTED]> wrote: > > > > > > Okay. I finally found a fix. It was actually quite simple. > Newer > > > > > > FreeBSD and Linux ATA drivers check whether the PCI ATA controller > is > > > > > > > > > in legacy ATA mode (aka PATA mode). The test failed and it was > > > > > > treated like a SATA controller. Of course, IRQ failed to map. ;-) > > > > > > > Try the attached patch. Tested with FreeBSD/amd64 6.0-BETA1 guest > on > > > > > > > > > FreeBSD/amd64 host. > > > > > > > > > > > > > > > > > > > > > You rock dude! This patch fixes it. FreeBSD54/amd64 Guest on > > > > > FreeBSD54/amd64 Host. > > > > > > > > > > Any thoughts of including this patch in the ports? > > > > > > > > > > > > > > > > > > > > > > Oops. I noticed only now that this time, it's the emulated NE2000 NIC > > > > that's not detected. This is for a FreeBSD/amd64 guest on > > > > FreeBSD/amd64 Host. > > > > > > > > > > > > > Scratch that. > > > > > > This is only because there's no ed in the GENERIC kernel for AMD64. > > > > > > > because we dropped support for it? > > > > cc -c -O2 -frename-registers -pipe -fno-strict-aliasing -Wall > > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > > -Wmissing-prototypes -Wpointer- > > arith -Winline -Wcast-qual -fformat-extensions -std=c99 -nostdinc > > -I- -I. -I/usr/src/sys -I/usr/src/sys/contrib/dev/acpica > > -I/usr/src/sys/contrib/a > > ltq -I/usr/src/sys/contrib/ipfilter -I/usr/src/sys/contrib/pf > > -I/usr/src/sys/contrib/dev/ath -I/usr/src/sys/contrib/dev/ath/freebsd > > -I/usr/src/sys/con > > trib/ngatm -D_KERNEL -include opt_global.h -fno-common > > -finline-limit=8000 --param inline-unit-growth=100 --param > > large-function-growth=1000 -mcmodel > > =kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx > > -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables > > -ffreestanding -Werror /usr/ > > src/sys/dev/ed/if_ed.c > > /usr/src/sys/dev/ed/if_ed.c: In function `ed_probe_WD80x3_generic': > > /usr/src/sys/dev/ed/if_ed.c:508: warning: implicit declaration of > > function `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: nested extern declaration of > `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:521: warning: nested extern declaration of > `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: redundant redeclaration of > 'kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: previous implicit > > declaration of 'kvtop' was here > > /usr/src/sys/dev/ed/if_ed.c:532: warning: nested extern declaration of > `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: redundant redeclaration of > 'kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: previous implicit > > declaration of 'kvtop' was here > > /usr/src/sys/dev/ed/if_ed.c:539: warning: nested extern declaration of > `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: redundant redeclaration of > 'kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: previous implicit > > declaration of 'kvtop' was here > > /usr/src/sys/dev/ed/if_ed.c:547: warning: nested extern declaration of > `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: redundant redeclaration of > 'kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: previous implicit > > declaration of 'kvtop' was here > > /usr/src/sys/dev/ed/if_ed.c:570: warning: nested extern declaration of > `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: redundant redeclaration of > 'kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: previous implicit > > declaration of 'kvtop' was here > > /usr/src/sys/dev/ed/if_ed.c: In function `ed_probe_3Com': > > /usr/src/sys/dev/ed/if_ed.c:905: warning: nested extern declaration of > `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: redundant redeclaration of > 'kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: previous implicit > > declaration of 'kvtop' was here > > /usr/src/sys/dev/ed/if_ed.c: In function `ed_probe_SIC': > > /usr/src/sys/dev/ed/if_ed.c:998: warning: nested extern declaration of > `kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: redundant redeclaration of > 'kvtop' > > /usr/src/sys/dev/ed/if_ed.c:508: warning: previous implicit > > declaration of 'kvtop' was here > > *** Error code 1 > > > > ugh :-( > > Aha, amd64 doesnt have kvtop anymore. Try the following patch: > (compiles on i386, it should fix amd64 if you are lucky - as long as > kvtop is the only problem...) >
Tried this patch. It does seem to work. But there are other problems in emulated amd64 --- such as segfaults here and there --- they seem to occur at random. This is for {5.4/6.01-Beta} AMD64. Thanks. > Index: if_ed.c > @@ -205,7 +205,7 @@ > int i; > u_int memsize, maddr; > u_char iptr, isa16bit, sum, totalsum; > - u_long conf_maddr, conf_msize, irq, junk; > + u_long conf_maddr, conf_msize, irq, junk, mphys; > > sc->chip_type = ED_CHIP_TYPE_DP8390; > > @@ -474,6 +474,7 @@ > return (error); > } > sc->mem_start = (caddr_t) rman_get_virtual(sc->mem_res); > + mphys = rman_get_start(sc->mem_res); > > /* > * allocate one xmit buffer if < 16k, two buffers otherwise > @@ -505,7 +506,7 @@ > sc->wd_laar_proto = ed_asic_inb(sc, ED_WD_LAAR); > } else { > sc->wd_laar_proto = ED_WD_LAAR_L16EN | > - ((kvtop(sc->mem_start) >> 19) & ED_WD_LAAR_ADDRHI); > + ((mphys >> 19) & ED_WD_LAAR_ADDRHI); > } > /* > * Enable 16bit access > @@ -518,7 +519,7 @@ > (sc->type == ED_TYPE_TOSHIBA4) || > (sc->type == ED_TYPE_WD8013EBT)) && > (sc->chip_type != ED_CHIP_TYPE_WD790)) { > - sc->wd_laar_proto = (kvtop(sc->mem_start) >> 19) & > + sc->wd_laar_proto = (mphys >> 19) & > ED_WD_LAAR_ADDRHI; > ed_asic_outb(sc, ED_WD_LAAR, sc->wd_laar_proto); > } > @@ -530,22 +531,22 @@ > if (sc->chip_type != ED_CHIP_TYPE_WD790) { > if (ED_FLAGS_GETTYPE(flags) == ED_FLAGS_TOSH_ETHER) { > ed_asic_outb(sc, ED_WD_MSR + 1, > - ((kvtop(sc->mem_start) >> 8) & 0xe0) | 4); > + ((mphys >> 8) & 0xe0) | 4); > ed_asic_outb(sc, ED_WD_MSR + 2, > - ((kvtop(sc->mem_start) >> 16) & 0x0f)); > + ((mphys >> 16) & 0x0f)); > ed_asic_outb(sc, ED_WD_MSR, > ED_WD_MSR_MENB | ED_WD_MSR_POW); > } else { > ed_asic_outb(sc, ED_WD_MSR, > - ((kvtop(sc->mem_start) >> 13) & > + ((mphys >> 13) & > ED_WD_MSR_ADDR) | ED_WD_MSR_MENB); > } > sc->cr_proto = ED_CR_RD2; > } else { > ed_asic_outb(sc, ED_WD_MSR, ED_WD_MSR_MENB); > ed_asic_outb(sc, ED_WD790_HWR, (ed_asic_inb(sc, ED_WD790_HWR) | > ED_WD790_HWR_SWH)); > - ed_asic_outb(sc, ED_WD790_RAR, ((kvtop(sc->mem_start) >> 13) & > 0x0f) | > - ((kvtop(sc->mem_start) >> 11) & 0x40) | > + ed_asic_outb(sc, ED_WD790_RAR, ((mphys >> 13) & 0x0f) | > + ((mphys >> 11) & 0x40) | > (ed_asic_inb(sc, ED_WD790_RAR) & 0xb0)); > ed_asic_outb(sc, ED_WD790_HWR, (ed_asic_inb(sc, ED_WD790_HWR) & > ~ED_WD790_HWR_SWH)); > sc->cr_proto = 0; > @@ -567,7 +568,7 @@ > for (i = 0; i < memsize; ++i) { > if (sc->mem_start[i]) { > device_printf(dev, "failed to clear shared memory at > %jx - check > configuration\n", > - (uintmax_t)kvtop(sc->mem_start + i)); > + (uintmax_t)mphys + i); > > /* > * Disable 16 bit access to shared memory > @@ -902,7 +903,7 @@ > for (i = 0; i < memsize; ++i) > if (sc->mem_start[i]) { > device_printf(dev, "failed to clear shared memory at > %jx - check > configuration\n", > - (uintmax_t)kvtop(sc->mem_start + i)); > + (uintmax_t)rman_get_start(sc->mem_res) + > i); > return (ENXIO); > } > return (0); > @@ -995,7 +996,7 @@ > if (sc->mem_start[i]) { > device_printf(dev, "failed to clear shared memory " > "at %jx - check configuration\n", > - (uintmax_t)kvtop(sc->mem_start + i)); > + (uintmax_t)rman_get_start(sc->mem_res) + i); > > return (ENXIO); > } > _______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel