akaros.git
5 years agoigbe: use safer MMIO register access
Barret Rhoden [Fri, 28 Mar 2014 21:39:24 +0000 (14:39 -0700)]
igbe: use safer MMIO register access

Gcc might optimize the register accesses, so we need to use the
volatile* helpers.

5 years agoFix up mac printing for /net/arp
Ronald G. Minnich [Fri, 28 Mar 2014 18:52:19 +0000 (11:52 -0700)]
Fix up mac printing for /net/arp

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd function for finding unused BARs
Ronald G. Minnich [Fri, 28 Mar 2014 17:11:44 +0000 (10:11 -0700)]
Add function for finding unused BARs

MSI-X will need up to two unused BARs, and at least one.
Next step is code to find the MSI-X capability and fill in the
blanks.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdds the e1000, rtl8169, and ethermii drivers
Barret Rhoden [Fri, 28 Mar 2014 01:27:25 +0000 (18:27 -0700)]
Adds the e1000, rtl8169, and ethermii drivers

Ported to Akaros already, from the old 9namespace tree and
external-devices repo.

5 years agox86: Stop guessing IOAPIC routes
Barret Rhoden [Fri, 28 Mar 2014 00:49:12 +0000 (17:49 -0700)]
x86: Stop guessing IOAPIC routes

That hasn't worked on hardware yet.

Also fixes dumb bug in msi_mask_irq(): it could be called without the
MSI cap.

5 years agox86: MSI enabling and cleanup
Barret Rhoden [Fri, 28 Mar 2014 00:16:53 +0000 (17:16 -0700)]
x86: MSI enabling and cleanup

MSI has the irq_h style function pointers and fits in to the x86 irq
handling system.  The global MSI funcs fall under pci.h too.

Also, this takes MSI out of the business of messing with PCI bus
mastering.

5 years agoIRQ func pointers param change
Barret Rhoden [Thu, 27 Mar 2014 23:29:50 +0000 (16:29 -0700)]
IRQ func pointers param change

MSI will need more info than just the vector.

5 years agox86: Fix pci_match_tbdf()
Barret Rhoden [Thu, 27 Mar 2014 22:37:04 +0000 (15:37 -0700)]
x86: Fix pci_match_tbdf()

And made it a PCI helper.  Also, bails out for all PCI devices when
match_tbdf fails.

Right now, the MSI enable mucks with my rtl8169 and attempting to
msi_enable() breaks the IRQ routing.

5 years agoRe enable MSI (does not crash anything that we can tell) and add prints
root [Thu, 27 Mar 2014 22:17:47 +0000 (15:17 -0700)]
Re enable MSI (does not crash anything that we can tell) and add prints

It will always act like it failed to enable, but it will go through the motions.

Signed-off-by: root <root@localhost.localdomain>
5 years agox86: LAPIC error handling
Barret Rhoden [Thu, 27 Mar 2014 21:46:42 +0000 (14:46 -0700)]
x86: LAPIC error handling

We were unmasking the error handler, but didn't have one registered.
We'd take an error, but then fail to send_eoi(), and then never received
further LAPIC IRQs (like the timer).

5 years agox86: fixes LAPIC unmasking
Barret Rhoden [Thu, 27 Mar 2014 21:44:24 +0000 (14:44 -0700)]
x86: fixes LAPIC unmasking

Was off by 0x320, not that it really had an effect.

5 years agoAdd comments to msi code; add new pci_clr_bus_master function
Ronald G. Minnich [Thu, 27 Mar 2014 21:03:35 +0000 (14:03 -0700)]
Add comments to msi code; add new pci_clr_bus_master function

The code is actually quite sensible. I'm wondering if we shouldn't
just bypass acpi ...

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agox86: misc MP/ACPI fixes
Barret Rhoden [Thu, 27 Mar 2014 19:47:25 +0000 (12:47 -0700)]
x86: misc MP/ACPI fixes

Needed more LVTs on some hardware, needed to scan all xioapics (the
array can be sparse), and when we don't have an IOAPIC, we need to treat
IPIs like the LAPIC.

Conflicts:
kern/arch/x86/ioapic.c

5 years agoBring in msi support
Ronald G. Minnich [Tue, 18 Mar 2014 21:58:50 +0000 (14:58 -0700)]
Bring in msi support

We're going to have to have it.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agox86: APIC cleanup
Barret Rhoden [Mon, 17 Mar 2014 20:56:30 +0000 (13:56 -0700)]
x86: APIC cleanup

Cleanup of debug info, some dead code removal, better header work, etc.

Things work on qemu, though c89 is unhappy about of a bunch of things.
(bigger apics (nlvt > max), multiple botched buses, and a bus_irq_init
with a 0'd TBDF.

5 years agox86: LAPIC vector masking
Barret Rhoden [Mon, 17 Mar 2014 04:11:32 +0000 (21:11 -0700)]
x86: LAPIC vector masking

With another fake bus for IPIs (APIC messages), that can't be masked.

5 years agox86: IRQ routing and IOAPIC mask/unmasking
Barret Rhoden [Sun, 16 Mar 2014 19:55:39 +0000 (12:55 -0700)]
x86: IRQ routing and IOAPIC mask/unmasking

The distinction btw enabling, masking, and unmasking is a bit murky.
Right now, you can set up a bus IRQ, and separately mask and unmask it.
But we don't tear down the routes completely yet.

5 years agox86: can use the IOAPIC even without MP tables
Barret Rhoden [Thu, 13 Mar 2014 04:33:55 +0000 (21:33 -0700)]
x86: can use the IOAPIC even without MP tables

mpparse() usually builds the RDT structs.  If the mptables are missing
or o/w incomplete, we'll need to check with ACPI to fill in the holes.

Checks the ACPI MADT for intovrs or just guesses (which isn't wrong for
ISA) to build an RDT route.

Qemu, at least, has ACPI intovr entries for its PCI NIC.  If we have
hardware with no MP tables and without intovr entries, then we might be
out of luck.  I try guessing, just in case that works.  With MSI, it
should be less of an issue.

5 years agox86: MP table cleanup, multiple IOAPICs
Barret Rhoden [Thu, 13 Mar 2014 04:30:36 +0000 (21:30 -0700)]
x86: MP table cleanup, multiple IOAPICs

Shuts up the MP table a little, and allows us to handle multiple IOAPICs
without panicing.

5 years agox86: bus_irq_enable()
Barret Rhoden [Thu, 13 Mar 2014 01:13:06 +0000 (18:13 -0700)]
x86: bus_irq_enable()

All IRQs, regardless of acpi/mptable/etc or bus type call the same funcs
to register IRQs.  If we didn't parse MP/ACPI or o/w don't have an
IOAPIC, we'll fall back to using the PIC.

5 years agox86: one register_irq() for all types of buses
Barret Rhoden [Wed, 12 Mar 2014 23:31:41 +0000 (16:31 -0700)]
x86: one register_irq() for all types of buses

The 'raw' vectors are just the BusLAPIC type.  I didn't like the nxm way
of relying on BUSUNKNOWN to detect if it was potentially LAPIC.  That
meant you'd always need a bus (like BusPCI) and not just the IRQ for any
external IRQ numbers that were within the LAPIC vector range.

Another way to put it: the LAPIC 'irq' and the global system irq
(devices/acpi) share a different domain, so we need to differentiate on
the bus.

5 years agox86: IDT vector realignment (XCC)
Barret Rhoden [Wed, 12 Mar 2014 21:49:05 +0000 (14:49 -0700)]
x86: IDT vector realignment (XCC)

Lays out what each IDT vector is used for, somewhat merging with the
Plan 9 stuff.  These are the vectors that the processor/LAPIC sees, not
the external IRQs.

This also changes the trap syscall vector to 0x40 (64), and the LAPIC
timer vector.

You need to reinstall your kernel headers and rebuild anything that made
trap based syscalls (parlib and all MCPs).  Not sure if you need to
rebuild the toolchain (probably not).

5 years agox86: MP table-detected ISA IRQs can be enabled
Barret Rhoden [Wed, 12 Mar 2014 04:00:44 +0000 (21:00 -0700)]
x86: MP table-detected ISA IRQs can be enabled

This also removes the polling of the serial device, which was a hack for
Ron's AMD board.  If we still need that, even with the IOAPIC, then we
should use a ktask.  And I'll be annoyed.

5 years agoRemoves shift-G from the escape codes
Barret Rhoden [Wed, 12 Mar 2014 03:36:23 +0000 (20:36 -0700)]
Removes shift-G from the escape codes

You can type G now, and have devices like #G.  Crazy!

5 years agoAdds the UCB-Plan 9 license
Barret Rhoden [Wed, 12 Mar 2014 03:26:22 +0000 (20:26 -0700)]
Adds the UCB-Plan 9 license

With a ref to it in LICENSE, for all the headers that just say LICENSE
and not LICENSE-PLAN9.

5 years agox86: moves the PIT into time.{h,c}
Barret Rhoden [Wed, 12 Mar 2014 03:18:28 +0000 (20:18 -0700)]
x86: moves the PIT into time.{h,c}

It's been cluttering the unrelated APIC files for about five years now.

5 years agox86: moves the PIC into its own file
Barret Rhoden [Wed, 12 Mar 2014 03:01:34 +0000 (20:01 -0700)]
x86: moves the PIC into its own file

5 years agox86: PICs for everyone!
Barret Rhoden [Wed, 12 Mar 2014 02:48:46 +0000 (19:48 -0700)]
x86: PICs for everyone!

Turns on the PIC all the time, but masks it.  And cleans up the PIC
initialization a bit, with the goal of removing ENABLE_MPTABLES.

5 years agox86: irq handler func pointers
Barret Rhoden [Wed, 12 Mar 2014 02:28:40 +0000 (19:28 -0700)]
x86: irq handler func pointers

This is more in line with modern OSs (plan 9, linux), where we have some
struct tracking what to do at a given vector, instead of branching on
the trap number.

5 years agoRemove dead code.
Ronald G. Minnich [Fri, 21 Mar 2014 22:41:55 +0000 (15:41 -0700)]
Remove dead code.

No longer used and can't even really be configured.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoThe last piece to test VMs; disable interrupts before starting one
Ronald G. Minnich [Fri, 21 Mar 2014 22:41:25 +0000 (15:41 -0700)]
The last piece to test VMs; disable interrupts before starting one

Can't test as IOAPIC is borked.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoMove timeout code to other side of uthread yield.
Kevin Klues [Fri, 21 Mar 2014 17:51:12 +0000 (10:51 -0700)]
Move timeout code to other side of uthread yield.

Also, only spin on awaiter->data if a timeout was set, and return the
proper value from the futx_wake() call.

5 years agoRearrange the timeout logic to be a little more efficient
Kevin Klues [Fri, 21 Mar 2014 09:49:06 +0000 (02:49 -0700)]
Rearrange the timeout logic to be a little more efficient

Also beef up the comments a bit

5 years agoUpdate pthread futexes to use alarms for timeouts
Kevin Klues [Fri, 21 Mar 2014 06:11:22 +0000 (23:11 -0700)]
Update pthread futexes to use alarms for timeouts

One side effect of this is that the pthread library now depends on
benchutil.  We may want to revisit this dependency.

5 years agoFix bug with duping fds for plan 9 files
Kevin Klues [Fri, 21 Mar 2014 05:53:06 +0000 (22:53 -0700)]
Fix bug with duping fds for plan 9 files

I added a new claim_fd() function similar to the get_fd() and put_fd()
functions in vfs.c.  When duping plan9 fds for a new_proc via dupfgrp()
we call claim_fd() to update the new_proc's open_file list shared with
the vfs.

I also swapped the order of put_fd() and setting the fd in
src/ns/sysfile.c to avoid a potential race condition with the assert in
newfd().

5 years agoRemove debug prints from cs and csquery
Ronald G. Minnich [Wed, 19 Mar 2014 15:12:19 +0000 (08:12 -0700)]
Remove debug prints from cs and csquery

These now work with the workaround for missing access(2)
and the fixed up llseek system call.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd llseek support for the plan 9 namespace
Ronald G. Minnich [Wed, 19 Mar 2014 14:59:05 +0000 (07:59 -0700)]
Add llseek support for the plan 9 namespace

This fixes, among other things, csquery.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoDebugging hacks.
Ronald G. Minnich [Wed, 19 Mar 2014 02:41:49 +0000 (19:41 -0700)]
Debugging hacks.

Note that offset is 17 in the Tread to cs. Bogus. How's it
getting set to 17?

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoCopy hexdump over to parlib
Ronald G. Minnich [Wed, 19 Mar 2014 02:27:30 +0000 (19:27 -0700)]
Copy hexdump over to parlib

It's very handy at times.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoFix up bugs in IP query
Ronald G. Minnich [Wed, 19 Mar 2014 00:21:18 +0000 (17:21 -0700)]
Fix up bugs in IP query

the problem was we don't implement access(2) yet

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoFix csquery.c
Ronald G. Minnich [Tue, 18 Mar 2014 23:10:17 +0000 (16:10 -0700)]
Fix csquery.c

/net/cs

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoFurther cleanup, but the behavior of procgen eludes me.
Ronald G. Minnich [Tue, 18 Mar 2014 00:35:39 +0000 (17:35 -0700)]
Further cleanup, but the behavior of procgen eludes me.

ctl is still not visible.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agolindent proc. Add in commands.
Ronald G. Minnich [Tue, 18 Mar 2014 00:13:23 +0000 (17:13 -0700)]
lindent proc. Add in commands.

We can now do kill and closefiles on procs. These
are extremely handy.

But the ctl file doesn't show up.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoForce the Qcoalesce flag on pipe fds
Kevin Klues [Fri, 14 Mar 2014 23:32:43 +0000 (16:32 -0700)]
Force the Qcoalesce flag on pipe fds

Without this writes can produce blocks of length 0, and reads can read
them.  This causes problems since reading a zero length blcok returns 0
, and 0 means EOF from the perspective of user space.  Turning on the
Qcoalesce flag removes these 0 length blocks from consideration.

5 years agoExplicitly set the SI_USER flag when signaling
Kevin Klues [Fri, 14 Mar 2014 03:04:52 +0000 (20:04 -0700)]
Explicitly set the SI_USER flag when signaling

Also set any default signal handlers that should be SIG_IGN to the
actualy SIG_IGN pointer instead of to a new function that just does
nothing.

5 years agoAdd a simple ps command.
Ronald G. Minnich [Thu, 13 Mar 2014 22:28:35 +0000 (15:28 -0700)]
Add a simple ps command.

ash /bin/ps works.
/bin/ps fails, for reasons I don't understand.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoremove monitor call that was used for debugging and is not needed
Ronald G. Minnich [Thu, 13 Mar 2014 22:24:39 +0000 (15:24 -0700)]
remove monitor call that was used for debugging and is not needed

5 years agoGet user to build with the new libraries.
Ronald G. Minnich [Thu, 13 Mar 2014 22:05:05 +0000 (15:05 -0700)]
Get user to build with the new libraries.

Lots of libraries came back, and things stopped building.
Note that Barret's cheap dial is commented out.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoGet status entry in /proc
Ronald G. Minnich [Thu, 13 Mar 2014 21:01:46 +0000 (14:01 -0700)]
Get status entry in /proc

Poor man's ps

/ $ cat '#p/1/status'
       1 WAITING         0/ $

Note: new newline.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoBring the proc device back.
Ronald G. Minnich [Thu, 13 Mar 2014 18:18:13 +0000 (11:18 -0700)]
Bring the proc device back.

We can now view namespaces and such.
I'll extend this more to get us real info.

/ $ ls '#p'
1          trace      tracepids
/ $ cat '#p/1/ns'
cd /
/ $ ash /ifconfig
bind #c -> /dev flag 1
bind #p -> /proc flag 1
bind #s -> /srv flag 1
bind #I -> /net flag 2
bind #l0 -> /net flag 2
Incoming IRQ, ISR: 73 on core 0
I am 10.0.2.15, default route 10.0.2.2
/ $ cat '#p/1/ns'
bind  /dev /dev
bind -b #c /dev
bind  /srv /srv
bind -b #s /srv
bind  /net /net
bind -a #I /net
bind -a #l /net
cd /
/ $

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd srvname back
Ronald G. Minnich [Thu, 13 Mar 2014 15:27:48 +0000 (08:27 -0700)]
Add srvname back

We'll need it for proc.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoFix omode handling in dev/srv; have csquery always open #s/cs until we are sure bindi...
Ronald G. Minnich [Tue, 11 Mar 2014 20:41:51 +0000 (13:41 -0700)]
Fix omode handling in dev/srv; have csquery always open #s/cs until we are sure binding works

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd the ndb files needed to make basic csquery work
Ronald G. Minnich [Tue, 11 Mar 2014 19:17:12 +0000 (12:17 -0700)]
Add the ndb files needed to make basic csquery work

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoPlan 9 programs for controlling and checking the network: cs.c, csquery.c, netstat.c
Ronald G. Minnich [Tue, 11 Mar 2014 19:14:05 +0000 (12:14 -0700)]
Plan 9 programs for controlling and checking the network: cs.c, csquery.c, netstat.c

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd ndblib and iplib
Ronald G. Minnich [Tue, 11 Mar 2014 19:04:43 +0000 (12:04 -0700)]
Add ndblib and iplib

Needed for connection services

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd default page fault handling to map to SIGSEGV in pthreads
Kevin Klues [Tue, 11 Mar 2014 18:42:16 +0000 (11:42 -0700)]
Add default page fault handling to map to SIGSEGV in pthreads

I refactored the signal handling code a bit so that page faults in our
pthread library trigger SIGSEGV signals that application code can
handle.

5 years agoMake building the VM optional
Ronald G. Minnich [Sat, 8 Mar 2014 05:02:00 +0000 (21:02 -0800)]
Make building the VM optional

It doesn't work anyway.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoGet the vm code to build again.
Ronald G. Minnich [Fri, 7 Mar 2014 17:44:11 +0000 (09:44 -0800)]
Get the vm code to build again.

Due to other changes the code had stopped building.
So get it to at least build. We also know the
source of the vm startup problems and will fix them as
soon as we have working hardware or a working qemu.

Also, enable more vmx options for qemu. Nope, still not
enough there yet. Qemu doesn't seem to do what it says it will
do.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agox86: irq asm handlers for non-PIC irqs
Barret Rhoden [Fri, 7 Mar 2014 07:23:01 +0000 (23:23 -0800)]
x86: irq asm handlers for non-PIC irqs

The APICS (IO, etc) can generate vectors beyond 47, so we need
IRQ_HANDLER stubs for them.

This was actually a fun commit: vim macro and CTRL-A to increment.

5 years agoAPIC MMIO reads/writes use the helper
Barret Rhoden [Fri, 7 Mar 2014 02:37:05 +0000 (18:37 -0800)]
APIC MMIO reads/writes use the helper

Some of the operations (like the IOAPIC version read) were getting
optimized such that they didn't work properly.  Like reading a byte
instead of the entire aligned 32 bit IOAPIC version.

5 years agox86: Maps in the full LAPIC and IOAPIC size (XCC)
Barret Rhoden [Thu, 6 Mar 2014 06:34:39 +0000 (22:34 -0800)]
x86: Maps in the full LAPIC and IOAPIC size (XCC)

MP spec says they are 1MB in size, not one page.  This changes a kernel
header, though not part userspace cares about.

5 years agox86_64: fixes bug in map_segment
Barret Rhoden [Thu, 6 Mar 2014 06:33:07 +0000 (22:33 -0800)]
x86_64: fixes bug in map_segment

Copy and paste from the submap case.

5 years agoVarious APIC debugging and IOAPIC IRQ routing
Barret Rhoden [Wed, 5 Mar 2014 01:27:06 +0000 (17:27 -0800)]
Various APIC debugging and IOAPIC IRQ routing

Still busted, but getting a bit closer.  apiconline() needs work, and needs to
be called for all cores.  IOAPIC routing is broken, and the interfaces to IRQ
code are sloppy.  We have a weird mix of plan9 code and Akaros code that do
different things with PCI and IRQ handling.

5 years agoACPI init reorg
Barret Rhoden [Wed, 5 Mar 2014 01:08:41 +0000 (17:08 -0800)]
ACPI init reorg

Init the ACPI as soon as possible, and handle the APIC during IDT init.

5 years agoExtracts sigscan/checksum
Barret Rhoden [Tue, 4 Mar 2014 19:20:34 +0000 (11:20 -0800)]
Extracts sigscan/checksum

Helpers to scan memory for a signature/pattern.  Now we can use them in
multiple places, without have the same code twice.

5 years agoLindent on the new APIC/ACPI files
Barret Rhoden [Tue, 4 Mar 2014 18:59:06 +0000 (10:59 -0800)]
Lindent on the new APIC/ACPI files

And the MP tables!  Oh, and devarch.

5 years agoRemvoe erroneous warning
Ronald G. Minnich [Tue, 4 Mar 2014 21:51:11 +0000 (13:51 -0800)]
Remvoe erroneous warning

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd an arch device
Ronald G. Minnich [Tue, 4 Mar 2014 17:48:04 +0000 (09:48 -0800)]
Add an arch device

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoOne final round of fixup/cleanup.
Ronald G. Minnich [Tue, 4 Mar 2014 16:25:15 +0000 (08:25 -0800)]
One final round of fixup/cleanup.

Not working.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoOne last attempt.
Ronald G. Minnich [Tue, 4 Mar 2014 15:57:23 +0000 (07:57 -0800)]
One last attempt.

Add the mp code. But it helpeth not. With luck we just
remove it again later, but now we can hack.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoClean up the prints, add some debug info
Ronald G. Minnich [Tue, 4 Mar 2014 02:00:50 +0000 (18:00 -0800)]
Clean up the prints, add some debug info

Still does not work of course but at least
we can learn more about why not.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoUse vmap_pmem
Ronald G. Minnich [Tue, 4 Mar 2014 00:34:33 +0000 (16:34 -0800)]
Use vmap_pmem

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoWe get further, this is enough for the code walkthrough
Ronald G. Minnich [Tue, 4 Mar 2014 00:23:53 +0000 (16:23 -0800)]
We get further, this is enough for the code walkthrough

I'm go to go contemplate the universe.
But this is the rough set of things that have to happen,
even if not all the bits are right.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoMore cleanup.
Ronald G. Minnich [Mon, 3 Mar 2014 23:25:16 +0000 (15:25 -0800)]
More cleanup.

Also, we needed tbdf in the ether struct as a "hook" for the ioapic.
ioapics really want that devno in the interrupt tables.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoMore set up for using ioapics
Ronald G. Minnich [Mon, 3 Mar 2014 22:25:35 +0000 (14:25 -0800)]
More set up for using ioapics

Everything *seems* to be getting done but interrupts still don't happen.
Note we had to change register_dev_interrupt to take a u32; the ioapic
requires it.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoFirst pass at enabling interrupts.
Ronald G. Minnich [Mon, 3 Mar 2014 19:15:51 +0000 (11:15 -0800)]
First pass at enabling interrupts.

This may not be too wrong.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoBring a bit more apic infrastructure up.
Ronald G. Minnich [Mon, 3 Mar 2014 18:28:46 +0000 (10:28 -0800)]
Bring a bit more apic infrastructure up.

I hope this does not conflict too much with what's there
already, we can hash this out tomorrow.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoImprove visibility of apics/ioapics
Ronald G. Minnich [Mon, 3 Mar 2014 18:07:52 +0000 (10:07 -0800)]
Improve visibility of apics/ioapics

if you cat '#a/ioapic' and '#a/apic', you'll see some useful
info about them. This is much better than the simple kernel dump.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd a bit more info to the print, we can now see introvr flags and what they mean.
Ronald G. Minnich [Mon, 3 Mar 2014 17:35:06 +0000 (09:35 -0800)]
Add a bit more info to the print, we can now see introvr flags and what they mean.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd some comments/prints
Ronald G. Minnich [Mon, 3 Mar 2014 07:09:59 +0000 (23:09 -0800)]
Add some comments/prints

This is so Barret will figure out how to make the
ioapicintrinit
code work from ACPI :-)

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoSet up ACPI interrupt configuration
Ronald G. Minnich [Mon, 3 Mar 2014 06:47:30 +0000 (22:47 -0800)]
Set up ACPI interrupt configuration

This builds and boots, and we seem to get console interrupts,
but not ethernet interrupts (under QEMU). Things need to be fixed.
Only works if you enable CONFIG_MPTABLES (which should be renamed
since we don't parse them, hooray!)

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd the pci device
Ronald G. Minnich [Mon, 3 Mar 2014 06:46:40 +0000 (22:46 -0800)]
Add the pci device

This won't compile of course.
We need to work out our pci calls so we can write the spatches.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd a bit more info to #a/acpipretty
Ronald G. Minnich [Sat, 1 Mar 2014 07:06:59 +0000 (23:06 -0800)]
Add a bit more info to #a/acpipretty

It will let you get pretty prints to user mode at any point.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoRun the mpacpi code.
Ronald G. Minnich [Sat, 1 Mar 2014 06:39:29 +0000 (22:39 -0800)]
Run the mpacpi code.

This actually seems to print out reasonable configurations
for ACPI init.

We'll need to review what the current code does, by dumping
all the register sets it does, and then compare to what this
would do.

Also, add a file to #a,
acpipretty

which when you cat it prints out the acpi tables in a
pretty form. It's not complete. Note its hokey use of a static;
that was not my doing, and we need to undo it.

One good idea would be to merge apic.h and ioapic.h. All systems
we care about from now on will always have an ioapic.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoRestore call to apicinit.
Ronald G. Minnich [Sat, 1 Mar 2014 02:33:24 +0000 (18:33 -0800)]
Restore call to apicinit.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoSet up prototype for apicinit.
Ronald G. Minnich [Sat, 1 Mar 2014 02:31:05 +0000 (18:31 -0800)]
Set up prototype for apicinit.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoThis builds and boots.
Ronald G. Minnich [Sat, 1 Mar 2014 02:26:10 +0000 (18:26 -0800)]
This builds and boots.

if you ls '#a' you can see it parses ACPI.

Sorry for the huge code base churn. Our include files
really need some work however.

C compilers are fast now. I'd still push for just including
akaros.h and having it just include everything but that's me :-)

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoWell, it *almost* builds. What happened to core_id?
Ronald G. Minnich [Sat, 1 Mar 2014 02:13:56 +0000 (18:13 -0800)]
Well, it *almost* builds. What happened to core_id?

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoSplits x86 arch for circular deps
Ronald G. Minnich [Sat, 1 Mar 2014 00:25:51 +0000 (16:25 -0800)]
Splits x86 arch for circular deps

Apic.h will need to include atomic.h, which needs arch (for irqs), which was also housing the coreid code that needs the LAPIC.  Hence the split.

Signed off and written by Barret  =)

5 years agoMore ioapic support, will it ever end.
Ronald G. Minnich [Fri, 28 Feb 2014 23:36:46 +0000 (15:36 -0800)]
More ioapic support, will it ever end.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoNot used any more
Ronald G. Minnich [Fri, 28 Feb 2014 22:14:00 +0000 (14:14 -0800)]
Not used any more

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoMore cleanup to prepare for ioapic support
Ronald G. Minnich [Fri, 28 Feb 2014 21:59:30 +0000 (13:59 -0800)]
More cleanup to prepare for ioapic support

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoPrepare to implement ioapic support
Ronald G. Minnich [Fri, 28 Feb 2014 21:42:05 +0000 (13:42 -0800)]
Prepare to implement ioapic support

first, remove unused stuff that does not ever seem to have worked.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoACPI now starts up.
Ronald G. Minnich [Fri, 28 Feb 2014 02:30:03 +0000 (18:30 -0800)]
ACPI now starts up.

This 'create your own fmt char' stuff is cute, but we're probably
blowing the stack out. It's not worth it, so I made it a
dumpGas
function. Which seems highly appropriate when discussing ACPI.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoACPI hanging
Ronald G. Minnich [Fri, 28 Feb 2014 02:07:39 +0000 (18:07 -0800)]
ACPI hanging

cat '#a' and watch the kernel lock up. NO ^g, no nothing. dead.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoAdd ACPI support.
Ronald G. Minnich [Thu, 27 Feb 2014 23:40:40 +0000 (15:40 -0800)]
Add ACPI support.

From the shiny new GPL Plan 9 repo!

5 years agoMake hexdump only print the # bytes; add pahexdump; make syscall_table visible
Ronald G. Minnich [Tue, 25 Feb 2014 17:50:05 +0000 (09:50 -0800)]
Make hexdump only print the # bytes; add pahexdump; make syscall_table visible

hexdump would print too much; fix that.
pahexdump uses a physical address.
For VMs we need to make the syscall_table visible.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoUpdate gtag script
Barret Rhoden [Tue, 18 Feb 2014 19:43:31 +0000 (11:43 -0800)]
Update gtag script

Allows you to put symlinks in your .gtagsinclude file.  You might need a recent
version of global (like 6.2.10) to handle symlinks without silently failing.

5 years agoRemove unused UINT64 macro
Ronald G. Minnich [Tue, 18 Feb 2014 16:42:19 +0000 (08:42 -0800)]
Remove unused UINT64 macro

This is interfering with other definitions in user code.
If we ever want Ivy back we can conditionally include
ivy.h
based on a config variable or something, right?

Signed-off-by: Ronald G. Minnich <rminnich@google.com>
5 years agoRemove emulate.o for now.
Ronald G. Minnich [Tue, 18 Feb 2014 16:13:46 +0000 (08:13 -0800)]
Remove emulate.o for now.

While we work on a different thing.

Signed-off-by: Ronald G. Minnich <rminnich@google.com>