aboutsummaryrefslogtreecommitdiff
path: root/linux
Commit message (Collapse)AuthorAgeFilesLines
...
* Keep DMA enabled on QEMU disksSamuel Thibault2018-06-131-0/+8
| | | | | | | | When the host is very loaded, some requests might time out, but that is not a reason for disabling DMA, so keep it enabled. * linux/src/drivers/block/triton.c (config_drive_for_dma): When disk is QEMU, set using_dma and keep_settings to 1.
* linux block: fix outbound access to non-directmap user dataSamuel Thibault2017-11-011-4/+6
| | | | | * linux/dev/glue/block.c (rdwr_full): Set BH_Bounce if the physical address of the user data is not in directmap.
* linux-block: Fix calling vm_map_copy_discard on uninitialized variableSamuel Thibault2017-10-311-2/+1
| | | | | | | | | This happens if passed count is 0. Reported by Richard Braun. * linux/dev/glue/block.c (device_write): Set copy variable before vm_map_copy_discard() is called.
* linux: Fix warnings.Justus Winter2017-10-261-2/+1
| | | | * linux/dev/glue/net.c (device_write): Remove unused variables.
* linux: Fix interrupt glue.Justus Winter2017-09-301-2/+16
| | | | | | | | | | | Previously, we used an invalid pointer to mark interrupts as reserved by Mach. This, however, crashes code trying to iterate over the list of interrupt handlers. Use a valid structure instead. * linux/dev/arch/i386/kernel/irq.c (reserved_mach_handler): New function. (reserved_mach): New variable. (reserve_mach_irqs): Use the new variable.
* Support GCC 7David Michael2017-05-071-0/+67
| | | | | * Makefile.am (clib_routines): Add __udivmoddi4. * linux/src/include/linux/compiler-gcc7.h: New file.
* linux: Remove incompatible local prototype.Justus Winter2016-10-121-4/+3
| | | | | * linux/dev/glue/kmem.c (vremap): Remove prototype, include the right header instead.
* kern: Improve assertions and panics.Justus Winter2016-10-011-2/+4
| | | | | | | | | | * kern/assert.h (Assert): Add function argument. (assert): Supply function argument. * kern/debug.c (Assert): Add function argument. Unify message format. (panic): Rename to 'Panic', add location information. * kern/debug.h (panic): Rename, and add a macro version that supplies the location. * linux/dev/include/linux/kernel.h: Use the new panic macro.
* Update device drivers for highmem supportRichard Braun2016-09-211-41/+22
| | | | | | | | | | Unconditionally use bounce buffers for now. * linux/dev/glue/net.c (device_write): Unconditionally use a bounce buffer. * xen/block.c (device_write): Likewise. * xen/net.c: Include <device/ds_routines.h>. (device_write): Unconditionally use a bounce buffer.
* Update Linux block layer glue codeRichard Braun2016-09-211-15/+16
| | | | | | | | | | The Linux block layer glue code needs to use page nodes with the appropriate interface since their redefinition as struct list. * linux/dev/glue/block.c: Include <kern/list.h>. (struct temp_data): Define member `pages' as a struct list. (alloc_buffer): Update to use list_xxx functions. (free_buffer, INIT_DATA, device_open, device_read): Likewise.
* Redefine what an external page isRichard Braun2016-09-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of a "page considered external", which apparently takes into account whether a page is dirty or not, redefine this property to reliably mean "is in an external object". This commit mostly deals with the impact of this change on the page allocation interface. * i386/intel/pmap.c (pmap_page_table_page_alloc): Update call to vm_page_grab. * kern/slab.c (kmem_pagealloc_physmem): Use vm_page_grab instead of vm_page_grab_contig. (kmem_pagefree_physmem): Use vm_page_release instead of vm_page_free_contig. * linux/dev/glue/block.c (alloc_buffer, device_read): Update call to vm_page_grab. * vm/vm_fault.c (vm_fault_page): Update calls to vm_page_grab and vm_page_convert. * vm/vm_map.c (vm_map_copy_steal_pages): Update call to vm_page_grab. * vm/vm_page.h (struct vm_page): Remove `extcounted' member. (vm_page_external_limit, vm_page_external_count): Remove extern declarations. (vm_page_convert, vm_page_grab): Update declarations. (vm_page_release, vm_page_grab_phys_addr): New function declarations. * vm/vm_pageout.c (VM_PAGE_EXTERNAL_LIMIT): Remove macro. (VM_PAGE_EXTERNAL_TARGET): Likewise. (vm_page_external_target): Remove variable. (vm_pageout_scan): Remove specific handling of external pages. (vm_pageout): Don't set vm_page_external_limit and vm_page_external_target. * vm/vm_resident.c (vm_page_external_limit): Remove variable. (vm_page_insert, vm_page_replace, vm_page_remove): Update external page tracking. (vm_page_convert): RemoveĀ `external' parameter. (vm_page_grab): Likewise. Remove specific handling of external pages. (vm_page_grab_phys_addr): Update call to vm_page_grab. (vm_page_release): Remove `external' parameter and remove specific handling of external pages. (vm_page_wait): Remove specific handling of external pages. (vm_page_alloc): Update call to vm_page_grab. (vm_page_free): Update call to vm_page_release. * xen/block.c (device_read): Update call to vm_page_grab. * xen/net.c (device_write): Likewise.
* Remove phys_first_addr and phys_last_addr global variablesRichard Braun2016-09-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old assumption that all physical memory is directly mapped in kernel space is about to go away. Those variables are directly linked to that assumption. * i386/i386/model_dep.h (phys_first_addr): Remove extern declaration. (phys_last_addr): Likewise. * i386/i386/phys.c (pmap_zero_page): Use VM_PAGE_DIRECTMAP_LIMIT instead of phys_last_addr. (pmap_copy_page, copy_to_phys, copy_from_phys): Likewise. * i386/i386/trap.c (user_trap): Remove check against phys_last_addr. * i386/i386at/biosmem.c (biosmem_bootstrap_common): Don't set phys_last_addr. * i386/i386at/mem.c (memmmap): Use vm_page_lookup_pa to determine if a physical address references physical memory. * i386/i386at/model_dep.c (phys_first_addr): Remove variable. (phys_last_addr): Likewise. (pmap_free_pages, pmap_valid_page): Remove functions. * i386/intel/pmap.c: Include i386at/biosmem.h. (pa_index): Turn into an alias for vm_page_table_index. (pmap_bootstrap): Replace uses of phys_first_addr and phys_last_addr as appropriate. (pmap_virtual_space): Use vm_page_table_size instead of phys_first_addr and phys_last_addr to obtain the number of physical pages. (pmap_verify_free): Remove function. (valid_page): Turn this macro into an inline function and rewrite using vm_page_lookup_pa. (pmap_page_table_page_alloc): Build the pmap VM object using vm_page_table_size to determine its size. (pmap_remove_range, pmap_page_protect, phys_attribute_clear, phys_attribute_test): Turn page indexes into unsigned long integers. (pmap_enter): Likewise. In addition, use either vm_page_lookup_pa or biosmem_directmap_end to determine if a physical address references physical memory. * i386/xen/xen.c (hyp_p2m_init): Use vm_page_table_size instead of phys_last_addr to obtain the number of physical pages. * kern/startup.c (phys_first_addr): Remove extern declaration. (phys_last_addr): Likewise. * linux/dev/init/main.c (linux_init): Use vm_page_seg_end with the appropriate segment selector instead of phys_last_addr to determine where high memory starts. * vm/pmap.h: Update requirements description. (pmap_free_pages, pmap_valid_page): Remove declarations. * vm/vm_page.c (vm_page_seg_end, vm_page_boot_table_size, vm_page_table_size, vm_page_table_index): New functions. * vm/vm_page.h (vm_page_seg_end, vm_page_table_size, vm_page_table_index): New function declarations. * vm/vm_resident.c (vm_page_bucket_count, vm_page_hash_mask): Define as unsigned long integers. (vm_page_bootstrap): Compute VP table size based on the page table size instead of the value returned by pmap_free_pages.
* Fix buffer size passed to scsi_do_cmdSamuel Thibault2016-05-264-6/+6
| | | | | | | | * linux/src/drivers/scsi/eata_dma_proc.c (eata_proc_info): Increase cmd size to 12. * linux/src/drivers/scsi/sd.c (do_sd_request, sd_init_done): Likewise. * linux/src/drivers/scsi/sr.c (do_sr_request, sr_init_done): Likewise. * linux/src/drivers/scsi/sr_ioctl.c (sr_ioctl): Likewise with sr_cmd.
* Use uint32_t instead of unsigned32_t.Flavio Cruz2016-04-041-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement stdint.h and use it in gnumach. Remove old type definitions such as signed* and unsigned*. * Makefile.am: Add -ffreestanding. * i386/i386/xen.h: Use uint64_t. * i386/include/mach/i386/machine_types.defs: Use uint32_t and int32_t. * i386/include/mach/i386/vm_types.h: Remove definitions of int*, uint*, unsigned* and signed* types. * i386/xen/xen.c: Use uint64_t. * include/device/device_types.defs: Use uint32_t. * include/mach/std_types.defs: Use POSIX types. * include/mach/std_types.h: Include stdint.h. * include/stdint.h: New file with POSIX types. * include/sys/types.h: Include stdint.h. * ipc/ipc_kmsg.c: Use uint64_t. * kern/exception.c: Use uint32_t. * linux/dev/include/linux/types.h: Remove POSIX types. * xen/block.c: Use uint64_t. * xen/net.c: Do not use removed unsigned*_t types. * xen/ring.h: Use uint32_t instead. * xen/store.c: Use uint32_t. * xen/store.h: Use uint32_t. * xen/time.c: Use POSIX types only. * xen/time.h: Use uint64_t.
* Disable probing legacy IDE when AHCI driver worksSamuel Thibault2016-01-293-1/+26
| | | | | | | | * linux/src/drivers/block/ide.c (default_io_base): Do not qualify const. (ide_disable_base): New function. * linux/dev/include/linux/blk.h (ide_disable_base): New declaration. * linux/dev/drivers/block/ahci.c (ahci_probe_dev): Call ide_disable_base with each I/O BAR of the AHCI PCI card.
* Use PCI macrosSamuel Thibault2016-01-291-2/+2
| | | | | | * linux/dev/drivers/block/ahci.c (ahci_probe_dev): Use PCI_BASE_ADDRESS_SPACE_IO and PCI_BASE_ADDRESS_MEM_MASK macros instead of hardcoded values.
* ahci: print PCI bus/dev/fun in hexadecimalSamuel Thibault2016-01-291-14/+14
| | | | | * linux/dev/drivers/block/ahci.c: Print PCI bus/dev/fun number in hexadecimal
* Fallback on direct PCI access when no BIOS32 is availableSamuel Thibault2016-01-291-0/+2
| | | | | | | | | Some hardware start shippping with no BIOS32 at all, and we'll have to implement ACPI to get the address of the mmconfig table. In the meanwhile, we can hope that the direct probe works (it does on HP820 for instance). * linux/src/arch/i386/kernel/bios32.c (pcibios_init): Also try check_direct_pci() when bios32 probing failed.
* Use vm_page as the physical memory allocatorRichard Braun2016-01-234-143/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change replaces the historical page allocator with a buddy allocator implemented in vm/vm_page.c. This allocator allows easy contiguous allocations and also manages memory inside segments. In a future change, these segments will be used to service requests with special constraints, such as "usable for 16-bits DMA" or "must be part of the direct physical mapping". * Makefrag.am (libkernel_a_SOURCES): Add vm/vm_page.c. * i386/Makefrag.am (libkernel_a_SOURCES): Add i386/i386at/biosmem.{c,h}. * i386/i386/vm_param.h: Include kern/macros.h. (VM_PAGE_DMA_LIMIT, VM_PAGE_MAX_SEGS, VM_PAGE_DMA32_LIMIT, VM_PAGE_DIRECTMAP_LIMIT, VM_PAGE_HIGHMEM_LIMIT, VM_PAGE_SEG_DMA, VM_PAGE_SEG_DMA32, VM_PAGE_SEG_DIRECTMAP, VM_PAGE_SEG_HIGHMEM): New macros. * i386/i386at/model_dep.c: Include i386at/biosmem.h. (avail_next, avail_remaining): Remove variables. (mem_size_init): Remove function. (i386at_init): Initialize and use the biosmem module for early physical memory management. (pmap_free_pages): Return phys_last_addr instead of avail_remaining. (init_alloc_aligned): Turn into a wrapper for biosmem_bootalloc. (pmap_grab_page): Directly call init_alloc_aligned instead of pmap_next_page. * i386/include/mach/i386/vm_types.h (phys_addr_t): New type. * kern/bootstrap.c (free_bootstrap_pages): New function. (bootstrap_create): Call free_bootstrap_pages instead of vm_page_create. * kern/cpu_number.h (CPU_L1_SIZE): New macro. * kern/slab.h: Include kern/cpu_number.h. (CPU_L1_SIZE): Remove macro, moved to kern/cpu_number.h. * kern/startup.c (setup_main): Change the value of machine_info.memory_size. * linux/dev/glue/glue.h (alloc_contig_mem, free_contig_mem): Update prototypes. * linux/dev/glue/kmem.c (linux_kmem_init): Don't use defunct page queue. * linux/dev/init/main.c (linux_init): Don't free unused memory. (alloc_contig_mem, free_contig_mem): Turn into wrappers for the vm_page allocator. * linux/pcmcia-cs/glue/ds.c (PAGE_SHIFT): Don't undefine. * vm/pmap.h (pmap_startup, pmap_next_page): Remove prototypes. * vm/vm_fault.c (vm_fault_page): Update calls to vm_page_convert. * vm/vm_init.c (vm_mem_init): Call vm_page_info_all. * vm/vm_object.c (vm_object_page_map): Update call to vm_page_init. * vm/vm_page.h (vm_page_queue_free): Remove variable declaration. (vm_page_create, vm_page_release_fictitious, vm_page_release): Remove declarations. (vm_page_convert, vm_page_init): Update prototypes. (vm_page_grab_contig, vm_page_free_contig): New prototypes. * vm/vm_resident.c (vm_page_template, vm_page_queue_free, vm_page_big_pagenum): Remove variables. (vm_page_bootstrap): Update and call vm_page_setup. (pmap_steal_memory): Update and call vm_page_bootalloc. (pmap_startup, vm_page_create, vm_page_grab_contiguous_pages): Remove functions. (vm_page_init_template, vm_page_grab_contig, vm_page_free_contig): New functions. (vm_page_init): Update and call vm_page_init_template. (vm_page_release_fictitious): Make static. (vm_page_more_fictitious): Update call to vm_page_init. (vm_page_convert): Rewrite to comply with vm_page. (vm_page_grab): Update and call vm_page_alloc_pa. (vm_page_release): Update and call vm_page_free_pa.
* Fix build with gcc-6Samuel Thibault2016-01-141-0/+67
| | | | * linux/src/include/linux/compiler-gcc6.h: New file.
* replace extern with static in some linux codeFlavio Cruz2016-01-028-29/+29
| | | | | | | | | | | * linux/dev/include/linux/fs.h: Replace extern with static. * linux/dev/include/linux/locks.h: Likewise. * linux/dev/include/linux/mm.h: Likewise. * linux/src/drivers/net/e2100.c: Likewise * linux/src/include/asm-i386/termios.h: Likewise. * linux/src/include/linux/interrupt.h: Likewise. * linux/src/include/net/route.h: Likewise. * linux/src/include/net/sock.h: Likewise.
* remove unnused disk code and headersFlavio Cruz2016-01-011-35/+0
| | | | | | | * i386/Makefrag.am: Remove disk.h. * i386/i386at/disk.h: Remove unnused definitions. * i386/include/mach/i386/disk.h: Remove. * linux/dev/glue/block.c (device_get_status): Remove V_GETPARMS case.
* fix some compiler warnings in gnumachFlavio Cruz2016-01-012-3/+3
| | | | | | | | * linux/dev/glue/block.c (out): Cast to device_t. * linux/dev/init/main.c (alloc_contig_mem): Initialize addr and cast return value to void *. * i386/i386/phys.c (pmap_copy_page): Initialize src_map. * i386/intel/pmap.c: Include i386at/model_dep.h. * kern/mach_clock.c (mapable_time_init): Cast to void *.
* Fix ahci unit MAX_PORTS checkSamuel Thibault2015-11-271-1/+1
| | | | | * linux/dev/drivers/block/ahci.c (ahci_do_request): Fix checking unit against MAX_PORTS.
* Fix missing format in printkSamuel Thibault2015-11-271-1/+1
| | | | * linux/dev/drivers/block/ahci.c (ahci_probe_dev): Add missing format.
* commit fce798016c4bd2be89b86b0d343ab54505409412Rik van Riel2015-09-071-1/+0
| | | | | | | | | [PATCH] advansys.c buffer overflow The Stanford checker found an error in advansys.c, the driver is accessing field 6 in an array[6]. Since this is the only place where this field is accessed it should be safe to simply remove this line.
* Avoid re-defining macrosJustus Winter2015-08-152-2/+8
| | | | | | * kern/macros.h: Avoid re-defining macros. * linux/src/include/linux/compiler-gcc.h: Likewise. * linux/src/include/linux/compiler.h: Likewise.
* linux/net: fix build with -O0Justus Winter2015-07-181-1/+1
| | | | * linux/src/drivers/net/pci-scan.c: Avoid #erroring out.
* Fix build with -O0Samuel Thibault2015-07-077-39/+55
| | | | | | | | | | | | | | | | | | | | | * linux/src/include/linux/string.h (strcpy, strncpy, strcat, strncat, strchr, strrchr, strlen, strnlen, strcmp, strncmp, memmove, memscan): Comment out extern declarations. * linux/dev/include/asm-i386/string.h (strcpy, strncpy, strcat, strncat, strcmp, strncmp, strchr, strrchr, strlen, __memcpy, __constant_memcpy, memmove, memchr, __memset_generic, __constant_c_memset, strnlen, __constant_c_and_count_memset, memscan): Turn extern inline into static inline. * linux/dev/include/linux/fs.h (mark_buffer_uptodate): Likewise. * linux/src/include/asm-i386/bitops.h (set_bit, clear_bit, change_bit, test_and_set_bit, test_and_clear_bit, test_and_change_bit, test_bit, find_first_zero_bit, find_next_zero_bit, ffz, ffs): Likewise. * linux/src/include/asm-i386/io.h (virt_to_phys, phys_to_virt, __out##s, __in##s, ins##s, outs##s): Likewise. * linux/src/include/asm-i386/semaphore.h (down, down_interruptible, up): Likewise. * linux/src/include/asm-i386/segment.h [!__OPTIMIZE]: Emit an ud2 instruction instead of an undefined reference.
* Fix restoring interrupts on timeoutSamuel Thibault2015-06-301-0/+1
| | | | | * linux/dev/drivers/block/ahci.c (ahci_identify): Restore flags before returning on timeout.
* Print about powered-down AHCI portsSamuel Thibault2015-06-291-6/+40
| | | | | * linux/dev/drivers/block/ahci.c (ahci_probe_dev): Print messages when device is present but powered down.
* Restrict `-fno-strict-aliasing' to the Linux driversJustus Winter2015-05-231-0/+5
| | | | | * Makefile.am: Move `-fno-strict-aliasing'... * linux/Makefrag.am: ... here.
* Add stdint integer types in Linux glueSamuel Thibault2015-05-231-0/+9
| | | | | * linux/dev/include/linux/types.h (int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t): New types.
* Fix semaphore failure path special calling conventionSamuel Thibault2015-05-021-3/+7
| | | | | | | * linux/src/include/asm-i386/semaphore.h (down): Pass semaphore address to down_failed through ecx. (down_interruptible): Likewise to down_failed_interruptible. (up): Likewise to up_wakeup.
* Replace clobbers with earlyclobbersSamuel Thibault2015-05-012-15/+17
| | | | | | | | | Newer gccs consider the former "impossible" * linux/src/include/asm-i386/bitops.h (find_first_zero_bit): Replace clobbers with earlyclobbers. * linux/src/include/asm-i386/semaphore.h (down, down_interruptible, up): Likewise.
* Fix build with gcc-5Samuel Thibault2015-04-301-0/+67
| | | | * linux/src/include/linux/compiler-gcc5.h: New file.
* Show odd number of portsSamuel Thibault2015-03-051-1/+1
| | | | * linux/dev/drivers/block/ahci.c (ahci_probe_dev): Show odd number of ports.
* linux: fix compiler warningJustus Winter2015-02-201-0/+1
| | | | | | | | If the loop above completes at least one iteration, `i' will be larger than zero. * linux/dev/glue/block.c (rdwr_full): Add assertion to appease the compiler.
* Fix programming PIT counterSamuel Thibault2014-11-231-1/+1
| | | | | * linux/dev/arch/i386/kernel/irq.c (init_IRQ): Properly mask 8 bits of PIT counter.
* Correct GCC's -Wformat-security issuesDavid Michael2014-11-2126-28/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * linux/pcmcia-cs/clients/axnet_cs.c (axdev_init): Add a format string literal where printk only has a single variable argument. * linux/src/drivers/net/3c507.c (el16_probe1): Likewise. * linux/src/drivers/net/3c509.c (el3_probe): Likewise. * linux/src/drivers/net/3c515.c (init_module): Likewise. (tc515_probe): Likewise. * linux/src/drivers/net/ac3200.c (ac_probe1): Likewise. * linux/src/drivers/net/apricot.c (apricot_probe): Likewise. * linux/src/drivers/net/at1700.c (at1700_probe1): Likewise. * linux/src/drivers/net/de4x5.c (de4x5_hw_init): Likewise. * linux/src/drivers/net/de600.c (de600_probe): Likewise. * linux/src/drivers/net/de620.c (de620_probe): Likewise. * linux/src/drivers/net/depca.c (depca_hw_init): Likewise. * linux/src/drivers/net/e2100.c (e21_probe1): Likewise. * linux/src/drivers/net/eepro.c (eepro_probe1): Likewise. * linux/src/drivers/net/eepro100.c (speedo_found1): Likewise. * linux/src/drivers/net/eexpress.c (eexp_hw_probe): Likewise. * linux/src/drivers/net/ewrk3.c (ewrk3_hw_init): Likewise. * linux/src/drivers/net/fmv18x.c (fmv18x_probe1): Likewise. * linux/src/drivers/net/hp-plus.c (hpp_probe1): Likewise. * linux/src/drivers/net/hp.c (hp_probe1): Likewise. * linux/src/drivers/net/lance.c (lance_probe1): Likewise. * linux/src/drivers/net/ne.c (ne_probe1): Likewise. * linux/src/drivers/net/pcnet32.c (pcnet32_probe1): Likewise. * linux/src/drivers/net/seeq8005.c (seeq8005_probe1): Likewise. * linux/src/drivers/net/smc-ultra.c (ultra_probe1): Likewise. * linux/src/drivers/net/smc-ultra32.c (ultra32_probe1): Likewise. * linux/src/drivers/net/wd.c (wd_probe1): Likewise.
* Add nodma optionsSamuel Thibault2014-11-132-3/+8
| | | | | | | | | | | Some very slow qemu instances would eventually trigger DMA timeouts, let's give a way to disable DMA there, it does not actually slow down operations anyway. * linux/src/drivers/block/ide.h (ide_drive_s): Add nodma field. * linux/src/drivers/block/ide.c (do_identify): Do not call dmaproc(ide_dma_check) when nodma is 1. (ide_setup): Add nodma option.
* Pass ide and hd kernel options to ide driverSamuel Thibault2014-11-122-0/+38
| | | | | | | | | * linux/dev/drivers/block/genhd.c: Include <linux/hdreg.h> and <alloca.h> (device_setup): Look for ide and hd options, and call ide_setup with them. * linux/src/drivers/block/ide.c (ide_setup) [MACH]: Parse hd[0-7] instead of hd[a-h].
* Fix printf warningPietro Braione2014-09-011-1/+1
| | | | | linux/src/drivers/net/sundance.c (start_tx): Fix format string according to parameter.
* Fix prototypeSamuel Thibault2014-04-041-1/+1
| | | | * linux/dev/glue/block.c (device_set_status): Fix prototype.
* Increase possible number of AHCI devices to 8Samuel Thibault2014-03-171-2/+2
| | | | | | | by reducing possible number of partitions to 32. * linux/dev/drivers/block/ahci.c (MAX_PORTS): Set to 8. (PARTN_BITS): Set to 5.
* AHCI driver cleanupsSamuel Thibault2014-02-231-106/+154
| | | | | | | | | | | | | | | * linux/dev/drivers/block/ahci.c (struct port): Add id and is_cd fields. (ahci_end_request): Only print error if quiet flag of the request is not set. (ahci_do_port_request): Upgrade sector parameter to 64 bit. Include those bits in the LBA48 request. (ahci_do_request): Upgrade sector count to 64bit. Only print errors if quiet flag of the request is not set. (ahci_probe_port): Move identify code... (ahci_identify): ... to new function. Handle WIN_PIDENTIFY case to recognize ATAPI devices. (ahci_probe_port): Also try WIN_PIDENTIFY command. (ahci_geninit): Avoid checking partition table on empty devices.
* Make open return ENXIO on missing CD-ROMSamuel Thibault2014-02-101-0/+4
| | | | | * linux/src/drivers/block/ide-cd.c (ide_cdrom_open): Return -ENXIO when CD sense failed.
* Add quiet flag to CD I/OSamuel Thibault2014-02-101-21/+26
| | | | | | | | | | | | | | | * linux/src/drivers/block/ide-cd.c (cdrom_queue_packet_command): Add `quiet' parameter, copied into the request. (cdrom_decode_status): Do not print I/O error when `quiet' field of request is non-zero. (cdrom_end_request): Do not print sense results when `quiet' field of request is non-zero. (cdrom_check_status, cdrom_read_capacity, cdrom_read_tocentry): Pass 1 to `cdrom_queue_packet_command''s `quiet' parameter. (cdrom_lockdoor, cdrom_eject, cdrom_pause, cdrom_startstop, cdrom_read_subchannel, cdrom_mode_sense, cdrom_mode_select, cdrom_play_lba_range_1, cdrom_read_block, cdrom_load_unload, ide_cdrom_ioctl): Pass 0 to `cdrom_queue_packet_command''s `quiet' parameter.
* Add missing initializationSamuel Thibault2014-02-101-0/+1
| | | | | * linux/src/drivers/block/ide.c (ide_init_drive_cmd): Initialize `quiet' field of request to 0;
* Add quiet flag to block I/OSamuel Thibault2014-02-105-9/+12
| | | | | | | | | | | | | | This avoids grub & such making Mach print flurries of floppy errors. * linux/dev/include/linux/blkdev.h (request): Add `quiet' field. * linux/dev/include/linux/blk.h (end_request): Print I/O error only if the `quiet' field of the request is 0. * linux/dev/include/linux/fs.h (ll_rw_block): Add `quiet' parameter. * linux/dev/glue/block.c (ll_rw_block): Add `quiet' parameter, copied into the request. (bread, rdwr_partial, rdwr_full): Pass 0 to `ll_rw_block''s `quiet' parameter. * linux/dev/drivers/block/floppy.c (floppy_revalidate): Pass 1 to `ll_rw_block''s `quiet' parameter.