summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-03-09Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2020-03-09Fix file name orderSamuel Thibault
2020-03-09Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2020-03-09Merge branch 'master' into master-user_level_driversSamuel Thibault
2020-03-09Clean exposition of interface to userlandSamuel Thibault
Only the notification bits should be in include/device/. Keep only the device_intr_ prefix.
2020-01-28Set time_t type to 64bitSamuel Thibault
In order to fix year 2038 limit in RTC driver * include/sys/types.h (time_t): Bump type to 64bit. * Makefile.am (clib_routines): Also allow __moddi3.
2020-01-27doc: Fix mapped-time exampleSamuel Thibault
One needs to use memory barriers to be sure to be reading values in the proper order. * doc/mach.texi (Host Time): Add __sync_synchronize() in mapped-time example.
2020-01-01Cope with machine_info.memory_size overflowSamuel Thibault
* kern/startup.c (setup_main): When memory size overflows machine_info.memory_size, set to maximum size.
2019-12-01i386: use 64bit precision by defaultSamuel Thibault
This is the System V ABI default. * i386/i386/fpu.c (fpinit): Use FPC_PC_64 instead of FPC_PC_53. (fp_state_alloc): Likewise.
2019-11-17Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-16Add port and entry in debugging printsSamuel Thibault
2019-11-12Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-12Fix hang on netdde crash with a nacked interruptSamuel Thibault
If netdde crashed without acknowledging the interrupt, the hardware might be stuck in a situation where it keeps the interrupt raised, and thus linux_intr keeps getting called. linux_intr should detect that we have removed handlers and then just disable the interrupt. Hopefully when the driver restarts it will reset the card, and thus the interrupt will stop before it enables it again.
2019-11-12Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-12Replace cli/sti with splhigh/splxSamuel Thibault
Otherwise calling functions which use spl levels will unexpectedly reenable interrupts.
2019-11-12Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-12More debuggingSamuel Thibault
2019-11-12Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-12Make cleaning unacked IRQs less noisySamuel Thibault
If a netdde dies but no netdde replaces it to trigger irqs, the Linux code doesn't remove the handler yet. We only want to warn once when cleaning the unacked IRQs, but no more after that, even if the entry is still there.
2019-11-12Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-12Move most user interrupt management to device/intr.cSamuel Thibault
Linux drivers should not have to care about delivery ports etc. Introducing a user_intr_t structure allows to clear stuff on userland process abortion.
2019-11-12Fix build warningsSamuel Thibault
2019-11-12Make userland irqs use counting, so both Linux and dde can mask interrupt as ↵Samuel Thibault
appropriate
2019-11-12typoSamuel Thibault
2019-11-12Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-12Merge branch 'master' into master-user_level_driversSamuel Thibault
2019-11-12irq: Add disabling counterSamuel Thibault
* linux/dev/arch/i386/kernel/irq.c (ndisabled_irq): New array. (__disable_irq, __enable_irq): New functions, count with ndisabled_irq before really calling mask_irq/unmask_irq. (linux_pic_mask): New variable. (disable_irq, enable_irq): Manage linux_pic_mask and call __disable_irq/__enable_irq instead of calling mask_irq/unmask_irq. * linux/src/include/asm-i386/irq.h (__disable_irq, __enable_irq): New prototypes.
2019-11-11Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-11Merge branch 'master' into master-user_level_driversSamuel Thibault
2019-11-11irq: Add disabling counterSamuel Thibault
* linux/dev/arch/i386/kernel/irq.c (ndisabled_irq): New array. (__disable_irq, __enable_irq): New functions, count with ndisabled_irq before really calling mask_irq/unmask_irq. (linux_pic_mask): New variable. (disable_irq, enable_irq): Manage linux_pic_mask and call __disable_irq/__enable_irq instead of calling mask_irq/unmask_irq.
2019-11-11Merge branch 'master-user_level_drivers' into master-user_level_drivers-debianSamuel Thibault
2019-11-11fix typoSamuel Thibault
2019-11-11Merge branch 'master' into master-user_level_driversSamuel Thibault
2019-11-11irq: Add disabling counterSamuel Thibault
* linux/dev/arch/i386/kernel/irq.c (ndisabled_irq): New array. (__disable_irq, __enable_irq): New functions, count with ndisabled_irq before really calling mask_irq/unmask_irq. (linux_pic_mask): New variable. (disable_irq, enable_irq): Manage linux_pic_mask and call __disable_irq/__enable_irq instead of calling mask_irq/unmask_irq.
2019-11-11PIC: Acknowledge interrupts more carefullySamuel Thibault
Specs seems to be saying that we should mask an irq out while acknowledging it with EOI. Also, better acknowledge only the concerned irq. * i386/i386at/interrupt.S (interrupt): Mask irq before notifying EOI. Using specific EOI instead of unspecific EOI.
2019-11-11PIC: fix EOI valuesSamuel Thibault
* i386/i386/pic.h (SPECIFIC_EOI, ROT_NON_SPEC, SET_ROT_AEOI, ROT_SPEC_EOI, SET_PRIORITY, NO_OPERATION): Shift value left by one bit.
2019-11-11intnull: Only warn once.Samuel Thibault
On real hardware, irq 7 seems to get raised often for some reason. * i386/i386/pic.c (intnull): Only print once the warning about interrupt being unexpectedly raised.
2019-11-10spl: Remove intpri arraySamuel Thibault
And simplify prtnull vs intnull vs linux_bad_intr. * i386/i386/ipl.h (intpri): Remove declaration * i386/i386/pic.c (prtnull_count): Remove variable. (prtnull): Remove function. * i386/i386/pic.h (prtnull): Remove declaration. * i386/i386at/autoconf.c (take_dev_irq, take_ctlr_irq): Use ivect instead of intpri to determine irq availability. Do not set intpri. * i386/i386at/pic_isa.c (ivect): Replace prtnull with intnull. (intpri): Remove array. * linux/dev/arch/i386/kernel/irq.c (linux_intr_pri): Remove variable. (linux_bad_intr): Remove function. (setup_x86_irq): Do not check intpri coherency. Do not set intpri. Set default ivect to intnull instead of linux_bad_intr. (probe_irq_on): Check ivect against intnull instead of linux_bad_intr. Do not set intpri. (probe_irq_off): Likewise. (reserve_mach_irqs): Do not check against prtnull. (old_clock_pri): Remove variable. (init_IRQ): Do not set intpri. Do not set ivect to linux_bad_intr. (restore_IRQ): Do not set ivect. * i386/i386/pit.c (clkstart): Do not set intpri. * i386/i386at/kd_mouse.c (kd_mouse_open, kd_mouse_close): Likewise. * linux/dev/drivers/block/genhd.c (device_setup): Do not set linux_intr_pri. * linux/dev/glue/block.c (init_partition, device_open): Likewise. * linux/dev/glue/net.c (device_open): Likewise. * linux/dev/glue/glue.h (linux_intr_pri, linux_bad_intr): Remove declarations.
2019-11-10Make default boot less scarySamuel Thibault
* linux/configfrag.ac (AM53C974, aha1542, eata, eata_pio, ppa, wd7000, 3c515, de600, de620): Disable by default drivers for elder hardware, which have scary boot messages. * linux/pcmcia-cs/modules/ds.c (init_pcmcia_ds): Make message about socket not being found less scary.
2019-11-10Fix build warningSamuel Thibault
* ddb/db_command.c: Include <ipc/mach_port.h>.
2019-11-10Run interrupt handlers at spl7Samuel Thibault
* i386/i386at/interrupt.S (interrupt): Call spl7 instead of the intpri-provided one.
2019-11-10simplify interrupt handlingDamien Zammit
We have removed spl levels, now remove the machinery to manage different PIC masks according to levels. Only keep machinery to disable interrupts whatever the level. * i386/i386/pic.c (pic_mask): Remove array. (picinit): Do not form PIC mask. Set initial PIC mask to 0. (form_pic_mask): Remove function. * i386/i386/pic.h (form_pic_mask, pic_mask): Remove declarations. * i386/i386/spl.S (SETMASK): Remove macro. (XEN_SETMASK): Add macro, containing the Xen version of SETMASK. (spl0, splx_cli, spl) [MACH_XEN]: Call XEN_SETMASK instead of SETMASK. * i386/i386/pit.c (clkstart): Do not call form_pic_mask. * i386/i386at/autoconf.c (take_dev_irq, take_ctlr_irq): Likewise. * i386/i386at/kd_mouse.c (kd_mouse_open, kd_mouse_close): Likewise. * linux/dev/arch/i386/kernel/irq.c (mask_irq, unmask_irq): Directly update curr_pic_mask without using pic_mask array. (init_IRQ, restore_IRQ): do not call form_pic_mask. * linux/dev/include/asm-i386/system.h: Include <i386/ipl.h>. (__save_flags, __restore_flags): Use curr_ipl and splx instead of hardware flags. * linux/dev/init/main.c (linux_init): Do not call cli. * linux/dev/kernel/sched.c (linux_timer_intr): Do not use pic_mask. * linux/src/drivers/block/ide.c (try_to_identify): Disable irq probing. * linux/src/drivers/scsi/NCR53c406a.c (NCR53c406a_detect): Disable irq probing.
2019-11-10ide: Use default IRQ by defaultSamuel Thibault
To avoid even trying to probe IRQs. Nowadays' hardware use the default IRQ anyway. * linux/src/drivers/block/ide.c (init_hwif_data): Set hwif->irq to default_irqs[index].
2019-11-10spl: Squash levels 1-6 into level 7Damien Zammit
* i386/i386/spl.S (SETIPL): Remove macro. (splsoftclock, spl1, spl2, spl3, splnet, splhdw, spl4, splbio, spldcm, spl5, spltty, splimp, splvm, spl6): Move entries to the spl7 entry.
2019-11-10pmap: fix format warningsSamuel Thibault
* i386/intel/pmap.c (pmap_bootstrap, pmap_set_page_readwrite, pmap_set_page_readonly, pmap_set_page_readonly_init, pmap_clear_bootstrap_pagetable, pmap_map_mfn, pmap_destroy, pmap_enter, pmap_collect, phys_attribute_clear): Fix format warnings.
2019-11-10Xen: fix bootSamuel Thibault
Xen seems to want a whole page for the PAE pdp. * i386/intel/pmap.c (pmap_init): Make pdpt cache use page-size allocation.
2019-11-01sched: cause ast on master processor tooSamuel Thibault
Nowadays' processors are way fast enough to handle everything fine. * kern/sched_prim.c (thread_setrun): Do not check against target processor being master.
2019-10-31pit: fix buildSamuel Thibault
* i386/i386/pit.c: Include <kern/cpu_number.h>
2019-10-31pit: avoid initializating several timesSamuel Thibault
i386/i386/pit.c (clkstart): Do not initialize PIT if cpu_number() is not 0.
2019-10-30Drop spurious changeSamuel Thibault
* version.m4: Remove spurious git tag qualifier.