#
259065 |
|
07-Dec-2013 |
gjb |
- Copy stable/10 (r259064) to releng/10.0 as part of the 10.0-RELEASE cycle. - Update __FreeBSD_version [1] - Set branch name to -RC1
[1] 10.0-CURRENT __FreeBSD_version value ended at '55', so start releng/10.0 at '100' so the branch is started with a value ending in zero.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
256281 |
|
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
#
233707 |
|
30-Mar-2012 |
jhb |
Move the legacy(4) driver to x86.
|
#
233676 |
|
29-Mar-2012 |
jhb |
Use a more proper fix for enabling HT MSI mapping windows on Host-PCI bridges. Rather than blindly enabling the windows on all of them, only enable the window when an MSI interrupt is enabled for a device behind the bridge, similar to what already happens for HT PCI-PCI bridges.
To implement this, each x86 Host-PCI bridge driver has to be able to locate it's actual backing device on bus 0. For ACPI, use the _ADR method to find the slot and function of the device. For the non-ACPI case, the legacy(4) driver already scans bus 0 looking for Host-PCI bridge devices. Now it saves the slot and function of each bridge that it finds as ivars that the Host-PCI bridge driver can then use in its pcib_map_msi() method.
This fixes machines where non-MSI interrupts were broken by the previous round of HT MSI changes.
Tested by: bapt MFC after: 1 week
|
#
227843 |
|
22-Nov-2011 |
marius |
- There's no need to overwrite the default device method with the default one. Interestingly, these are actually the default for quite some time (bus_generic_driver_added(9) since r52045 and bus_generic_print_child(9) since r52045) but even recently added device drivers do this unnecessarily. Discussed with: jhb, marcel - While at it, use DEVMETHOD_END. Discussed with: jhb - Also while at it, use __FBSDID.
|
#
222929 |
|
10-Jun-2011 |
jhb |
Implement BUS_ADJUST_RESOURCE() for the x86 drivers that sit between the Host-PCI bridge drivers and nexus.
|
#
220433 |
|
07-Apr-2011 |
jkim |
Use atomic load & store for TSC frequency. It may be overkill for amd64 but safer for i386 because it can be easily over 4 GHz now. More worse, it can be easily changed by user with 'machdep.tsc_freq' tunable (directly) or cpufreq(4) (indirectly). Note it is intentionally not used in performance critical paths to avoid performance regression (but we should, in theory). Alternatively, we may add "virtual TSC" with lower frequency if maximum frequency overflows 32 bits (and ignore possible incoherency as we do now).
|
#
216443 |
|
14-Dec-2010 |
jkim |
Stop lying about supporting cpu_est_clockrate() when TSC is invariant. This function always returned the nominal frequency instead of current frequency because we use RDTSC instruction to calculate difference in CPU ticks, which is supposedly constant for the case. Now we support cpu_get_nominal_mhz() for the case, instead. Note it should be just enough for most usage cases because cpu_est_clockrate() is often times abused to find maximum frequency of the processor.
|
#
212413 |
|
10-Sep-2010 |
avg |
bus_add_child: change type of order parameter to u_int
This reflects actual type used to store and compare child device orders. Change is mostly done via a Coccinelle (soon to be devel/coccinelle) semantic patch. Verified by LINT+modules kernel builds.
Followup to: r212213 MFC after: 10 days
|
#
209059 |
|
11-Jun-2010 |
jhb |
Update several places that iterate over CPUs to use CPU_FOREACH().
|
#
177157 |
|
13-Mar-2008 |
jhb |
Rework how the nexus(4) device works on x86 to better handle the idea of different "platforms" on x86 machines. The existing code already handles having two platforms: ACPI and legacy. However, the existing approach was rather hardcoded and difficult to extend. These changes take the approach that each x86 hardware platform should provide its own nexus(4) driver (it can inherit most of its behavior from the default legacy nexus(4) driver) which is responsible for probing for the platform and performing appropriate platform-specific setup during attach (such as adding a platform-specific bus device). This does mean changing the x86 platform busses to no longer use an identify routine for probing, but to move that logic into their matching nexus(4) driver instead. - Make the default nexus(4) driver in nexus.c on i386 and amd64 handle the legacy platform. It's probe routine now returns BUS_PROBE_GENERIC so it can be overriden. - Expose a nexus_init_resources() routine which initializes the various resource managers so that subclassed nexus(4) drivers can invoke it from their attach routine. - The legacy nexus(4) driver explicitly adds a legacy0 device in its attach routine. - The ACPI driver no longer contains an new-bus identify method. Instead it exposes a public function (acpi_identify()) which is a probe routine that the MD nexus(4) drivers can use to probe for ACPI. All of the probe logic in acpi_probe() is now moved into acpi_identify() and acpi_probe() is just a stub. - On i386 and amd64, an ACPI-specific nexus(4) driver checks for ACPI via acpi_identify() and claims the nexus0 device if the probe succeeds. It then explicitly adds an acpi0 device in its attach routine. - The legacy(4) driver no longer knows anything about the acpi0 device. - On ia64 if acpi_identify() fails you basically end up with no devices. This matches the previous behavior where the old acpi_identify() would fail to add an acpi0 device again leaving you with no devices.
Discussed with: imp Silence on: arch@
|
#
177041 |
|
10-Mar-2008 |
jhb |
Probe CPUs after the PCI hierarchy on i386, amd64, and ia64. This allows the cpufreq drivers to reliably use properties of PCI devices for quirks, etc. - For the legacy drivers, add CPU devices via an identify routine in the CPU driver itself rather than in the legacy driver's attach routine. - Add CPU devices after Host-PCI bridges in the acpi bus driver. - Change the ichss(4) driver to use pci_find_bsf() to locate the ICH and check its device ID rather than having a bogus PCI attachment that only checked for the ID in probe and always failed. As a side effect, you can now kldload ichss after boot. - Fix the ichss(4) driver to use the correct device_t for the ICH (and not for ichss0) when doing PCI config space operations to enable SpeedStep.
MFC after: 2 weeks Reviewed by: njl, Andriy Gapon avg of icyb.net.ua
|
#
172394 |
|
30-Sep-2007 |
marius |
Make the PCI code aware of PCI domains (aka PCI segments) so we can support machines having multiple independently numbered PCI domains and don't support reenumeration without ambiguity amongst the devices as seen by the OS and represented by PCI location strings. This includes introducing a function pci_find_dbsf(9) which works like pci_find_bsf(9) but additionally takes a domain number argument and limiting pci_find_bsf(9) to only search devices in domain 0 (the only domain in single-domain systems). Bge(4) and ofw_pcibus(4) are changed to use pci_find_dbsf(9) instead of pci_find_bsf(9) in order to no longer report false positives when searching for siblings and dupe devices in the same domain respectively. Along with this change the sole host-PCI bridge driver converted to actually make use of PCI domain support is uninorth(4), the others continue to use domain 0 only for now and need to be converted as appropriate later on. Note that this means that the format of the location strings as used by pciconf(8) has been changed and that consumers of <sys/pciio.h> potentially need to be recompiled.
Suggested by: jhb Reviewed by: grehan, jhb, marcel Approved by: re (kensmith), jhb (PCI maintainer hat)
|
#
167742 |
|
20-Mar-2007 |
jhb |
Tweak the probe/attach order of devices on the x86 nexus devices. Various BIOS-related psuedo-devices are added at an order of 5. acpi0 is added at an order of 10, and legacy0 is added at an order of 11.
|
#
141942 |
|
15-Feb-2005 |
njl |
Correct a few bugs in the legacy cpu attachment. Get the unit from the parent cpu device before passing it to pcpu_find(). Get the ivars from the child, not parent cpu device. These bugs would cause a panic when dereferencing the pcpu ivar, but weren't present in the acpi attachment which it seems most people are using.
|
#
141380 |
|
06-Feb-2005 |
njl |
Staticize the legacy cpu devclasses and revert the name for the acpi_cpu devclass. As pointed out by dfr@, devclasses don't have to share the same linkage if multiple drivers have the same name. Newbus should match the devclasses based on name and allocate non-conflicting unit numbers.
|
#
141278 |
|
04-Feb-2005 |
nyan |
Fix pc98 support (broken by previous change).
|
#
141238 |
|
04-Feb-2005 |
njl |
Update the CPU attachments to return CPU_IVAR_PCPU as well as pass on appropriate requests to any children.
|
#
138520 |
|
07-Dec-2004 |
imp |
NEC PC-98 machines do not have and cannot have an EISA bus. They have only C-Bus and PCI busses. Therefore, don't create an eisa0 node on the legacy bus that can never attach.
PC-98 info verified by: nyan-san
|
#
133886 |
|
16-Aug-2004 |
gibbs |
Modify the "legacy bus" to pass all resource allocations through to its parent rather than track resources locally. The original code was incomplete in that it would only honor requests for resources that already exist in its resource list. This prevented many ISA identify routines from allocating temporary resources. Passing the requests up to legacy's parent losing no functionality and allows these requests to succeed.
Reviewed by: imp, jhb Approved by: RE
|
#
129961 |
|
01-Jun-2004 |
jhb |
Fix legacy_add_child() to properly handle the case where device_add_child_ordered() fails (due to a duplicate device add for example) and properly cleanup and return NULL.
|
#
129876 |
|
30-May-2004 |
phk |
Add some missing <sys/module.h> includes which are masked by the one on death-row in <sys/kernel.h>
|
#
129012 |
|
06-May-2004 |
njl |
Move the CPU newbus attachment to i386 legacy. The acpi_cpu device will become just "cpu" and provide attachments in the !legacy case.
Tested by: des
|
#
119452 |
|
25-Aug-2003 |
obrien |
Fix copyright comment & FBSDID style nits.
Requested by: bde
|
#
116277 |
|
12-Jun-2003 |
mdodd |
Conditionally attach the MCA bus device.
|
#
115683 |
|
02-Jun-2003 |
obrien |
Use __FBSDID().
|
#
104224 |
|
30-Sep-2002 |
jhb |
- Give legacy an identify routine that always adds 'legacy0' at an order of 1 so that it is not probed until after acpi0 is probed and attached. - In legacy_probe(), return ENXIO if acpi0 is around and alive. - nexus_attach() is now much simpler and just lets its child drivers do all the work.
|
#
103862 |
|
23-Sep-2002 |
jhb |
Add a new legacy(4) device driver for use on machines that do not have ACPI or for when ACPI support is disabled or not present in the kernel. Basically, the nexus device is now split into two with some parts (such as adding default ISA, MCA, and EISA busses if they aren't found as well as support for PCI bus device ivars) being moved to the legacy driver.
|
#
102920 |
|
04-Sep-2002 |
jhb |
Use resource_list_print_type() instead of duplicating the code in nexus_print_resources().
|
#
90762 |
|
17-Feb-2002 |
nyan |
- Split the routine to initialize a bus_space_handle into the separate function. - Only access a bus_space_handle if the resource type is SYS_RES_MEMORY or SYS_RES_IOPORT. - Add the bus_space_subregion supports.
|
#
89980 |
|
30-Jan-2002 |
bde |
Don't include <isa/isavar.h> or compile code depending on it when isa is not configured. Including <isa/isavar.h> when it is not used is harmful as well as bogus, since it includes "isa_if.h" which is not generated when isa is not configured.
This was fixed in 1999 but was broken by unconditionalizing PNPBIOS.
|
#
84615 |
|
07-Oct-2001 |
nyan |
Rewrite the pc98 bus_space stuff.
The type of bus_space_tag_t is now a pointer to bus_space_tag structure, and the bus_space_tag structure saves pointers to functions for direct access and relocate access.
Added bsh_bam member to the bus_space_handle structure, it saves access method either direct access or relocate access which is called by bus_space_* functions.
Added the mecia device support. If the bs_da and bs_ra in bus tag are set NEPC_io_space_tag and NEPC_mem_space_tag respectively, new bus_space stuff changes the register of mecia automatically for 16bit access.
Obtained from: NetBSD/pc98
|
#
72239 |
|
09-Feb-2001 |
jhb |
Use the MI ithread helper functions in the x86 interrupt code.
|
#
69781 |
|
08-Dec-2000 |
dwmalone |
Convert more malloc+bzero to malloc+M_ZERO.
Submitted by: josh@zipperup.org Submitted by: Robert Drehmel <robd@gmx.net>
|
#
69774 |
|
08-Dec-2000 |
phk |
Staticize some malloc M_ instances.
|
#
68676 |
|
13-Nov-2000 |
nyan |
Initialize bus_space_handle_t with zero (for PC-98).
|
#
67882 |
|
29-Oct-2000 |
phk |
Remove unneeded #include <sys/proc.h> lines.
|
#
67346 |
|
20-Oct-2000 |
kato |
Convert the type of bus_space_handle_t of pc98 from structure into pointer to structure.
Reviewed by: nyan
|
#
67268 |
|
17-Oct-2000 |
mdodd |
Use appropriate resource management accessors instead of directly referencing structure members.
Use rman_get_size() instead of end - start + 1.
|
#
66503 |
|
01-Oct-2000 |
peter |
Fix the no-pci case of attaching isa, eisa and mca devices. device_add_child() is meant to be called by the bus add_child method, not to replace the bus add_child method. We could have called nexus_add_device directly too, that would have also worked.
PR: 21657 Tested by: markm
|
#
66416 |
|
27-Sep-2000 |
peter |
Get out the roto-rooter and clean up the abuse of nexus ivars by the i386/isa/pcibus.c. This gets -current running again on multiple host->pci machines after the most recent nexus commits. I had discussed this with Mike Smith, but ended up doing it slightly differently to what we discussed as it turned out cleaner this way. Mike was suggesting creating a new resource (SYS_RES_PCIBUS) or something and using *_[gs]et_resource(), but IMHO that wasn't ideal as SYS_RES_* is meant to be a global platform property, not a quirk of a given implementation. This does use the ivar methods but does so properly. It also now prints the physical pci bus that a host->pci bridge (pcib) corresponds to.
|
#
66400 |
|
26-Sep-2000 |
msmith |
Since the nexus is responsible for creating the I/O resources (ports, memory) it ought to be able to deal with devices directly attached to it having allocations of such resources. Make it so.
|
#
66277 |
|
22-Sep-2000 |
ps |
Remove the NCPU, NAPIC, NBUS, NINTR config options. Make NAPIC, NBUS, NINTR dynamic and set NCPU to a maximum of 16 under SMP.
Reviewed by: peter
|
#
65822 |
|
13-Sep-2000 |
jhb |
- Remove the inthand2_t type and use the equivalent driver_intr_t type from newbus for referencing device interrupt handlers. - Move the 'struct intrec' type which describes interrupt sources into sys/interrupt.h instead of making it just be a x86 structure. - Don't create 'ithd' and 'intrec' typedefs, instead, just use 'struct ithd' and 'struct intrec' - Move the code to translate new-bus interrupt flags into an interrupt thread priority out of the x86 nexus code and into a MI ithread_priority() function in sys/kern/kern_intr.c. - Remove now-uneeded x86-specific headers from sys/dev/ata/ata-all.c and sys/pci/pci_compat.c.
|
#
65557 |
|
06-Sep-2000 |
jasone |
Major update to the way synchronization is done in the kernel. Highlights include:
* Mutual exclusion is used instead of spl*(). See mutex(9). (Note: The alpha port is still in transition and currently uses both.)
* Per-CPU idle processes.
* Interrupts are run in their own separate kernel threads and can be preempted (i386 only).
Partially contributed by: BSDi (BSD/OS) Submissions by (at least): cp, dfr, dillon, grog, jake, jhb, sheldonh
|
#
61995 |
|
23-Jun-2000 |
msmith |
Add a stub driver to consume the PnP "system resource" items, and hide them in the !bootverbose case.
|
#
61992 |
|
23-Jun-2000 |
msmith |
Stop trying to do anything funny with the interrupt resource range. The AT PIC will consume IRQ 2 correctly in the !APIC_IO case.
|
#
59495 |
|
22-Apr-2000 |
nyan |
- PC-98 uses IRQ2 too. - Fixed the range of DMA channels on PC-98.
Submitted by: "T.Yamaoka" <taka@windows.squares.net>
|
#
58762 |
|
29-Mar-2000 |
kato |
Added indirect pio into the bus space stuff for the NEC PC-98. bus.h includes one of bus_at386.h and bus_pc98.h. Becuase only bus_pc98.h supports indirect pio and bus_at386.h is identical to old bus.h, there is no functional change in PC-AT's kernels. That is, it cannot cause performance loss.
Submitted by: nyan Reviewed by: imp bde and luoqi provided useful comments for earlier version.
|
#
56623 |
|
25-Jan-2000 |
msmith |
Correctly initialise the available IRQ numbers in the APIC_IO case. IRQ 2 was being unilaterally disallowed, which is only appropriate if the interrupt hardware is the traditional chained PIC arrangement.
Reviewed by: tegge (in principle)
|
#
56243 |
|
18-Jan-2000 |
billf |
Cast rman_get_virtual() to a vm_offset_t.
Submitted by: msmith
|
#
56237 |
|
18-Jan-2000 |
alfred |
unbreak (rv -> r), afaik what Mike intended, boots fine on my machine
|
#
56213 |
|
18-Jan-2000 |
msmith |
Don't try to map memory resources into the kernel until they're actually activated. Some of the things that get listed as "resources" aren't necessarily suited for this.
(This shouldn't be a problem for any driver that correctly passes RF_ACTIVE)
|
#
54073 |
|
03-Dec-1999 |
mdodd |
Remove the 'ivars' arguement to device_add_child() and device_add_child_ordered(). 'ivars' may now be set using the device_set_ivars() function.
This makes it easier for us to change how arbitrary data structures are associated with a device_t. Eventually we won't be modifying device_t to add additional pointers for ivars, softc data etc.
Despite my best efforts I've probably forgotten something so let me know if this breaks anything. I've been running with this change for months and its been quite involved actually isolating all the changes from the rest of the local changes in my tree.
Reviewed by: peter, dfr
|
#
52397 |
|
19-Oct-1999 |
peter |
Remove pccard attachment stub, this caused pccard unit 0 to be allocated and unusable by the pccard system since pccard doesn't attach to the nexus any more. This was stopping my 3c589D from working as pccard unit 0 is used directly for resource allocation and this fails when unit 0 isn't actually attached to anything.
|
#
52121 |
|
11-Oct-1999 |
peter |
Zap unneeded #includes
Submitted by: phk
|
#
50992 |
|
06-Sep-1999 |
imp |
Add pccard child to nexus. A better version would take care of this with an identify method, but that has not been implemented.
Forgotten by: imp
|
#
50823 |
|
03-Sep-1999 |
mdodd |
This adds the i386 specific support for systems with a MicroChannel Architecture bus.
Reviewed by: msmith
|
#
50477 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
50271 |
|
23-Aug-1999 |
bde |
Fixed a misplaced cast to uintptr_t. Cosmetic.
Use device_get_nameunit() instead of rolling our own.
|
#
50252 |
|
23-Aug-1999 |
peter |
The nexus_attach() code works a lot better if it's actually connected to the device methods... Also, don't fail to add eisa/isa because a previous device failed to attach.
|
#
50183 |
|
22-Aug-1999 |
peter |
Take advantage of the apm/npx code and let them identify themselves rather than having explicit hooks here. Treat the eisa/isa attach a little differently so that we defer the decision about to attach eisa/isa to the motherboard directly only if the PCI probe (if it exists) fails to turn up a PCI->EISA/ISA bridge. This restores the original device geometry where ISA and/or EISA attach to their bridge rather than bypassing and going to the root.
|
#
49195 |
|
28-Jul-1999 |
mdodd |
Alter the behavior of sys/kern/subr_bus.c:device_print_child()
- device_print_child() either lets the BUS_PRINT_CHILD method produce the entire device announcement message or it prints "foo0: not found\n"
Alter sys/kern/subr_bus.c:bus_generic_print_child() to take on the previous behavior of device_print_child() (printing the "foo0: <FooDevice 1.1>" bit of the announce message.)
Provide bus_print_child_header() and bus_print_child_footer() to actually print the output for bus_generic_print_child(). These functions should be used whenever possible (unless you can just use bus_generic_print_child())
The BUS_PRINT_CHILD method now returns int instead of void.
Modify everything else that defines or uses a BUS_PRINT_CHILD method to comply with the above changes.
- Devices are 'on' a bus, not 'at' it. - If a custom BUS_PRINT_CHILD method does the same thing as bus_generic_print_child(), use bus_generic_print_child() - Use device_get_nameunit() instead of both device_get_name() and device_get_unit() - All BUS_PRINT_CHILD methods return the number of characters output.
Reviewed by: dfr, peter
|
#
48832 |
|
15-Jul-1999 |
msmith |
Add support for multiple PCI busses directly connected to the nexus. This is only partially complete, but allows 450NX-based systems with more than one PCI bus to be used again.
Submitted by: dfr
|
#
47611 |
|
30-May-1999 |
dfr |
Activate/deactivate resources by calling the method, not through the resource manager automatic handling of RF_ACTIVE.
|
#
47307 |
|
18-May-1999 |
peter |
Move pcibus (host -> pci bus) probe/attach routines from nexus to pcibus.c. pci_cfgopen() becomes static and there are no more bus #ifdef's in nexus.c.
|
#
46917 |
|
10-May-1999 |
dfr |
Add missing suspend/resume methods.
|
#
46743 |
|
08-May-1999 |
dfr |
Move the declaration of the interrupt type from the driver structure to the BUS_SETUP_INTR call.
|
#
46737 |
|
08-May-1999 |
peter |
Add some notes about the globalness of certain things like interrupts and ISA DMA channels (ie: on most PCI systems, they are not.. they are on the ISA side of the PCI-ISA bridge and could be duplicated if there were multiple PCI-ISA bridges, say in a laptop docking station), while the APIC resources would be global on SMP systems. Also, revert a previous change, change some printfs back to panics.
|
#
46728 |
|
08-May-1999 |
peter |
Don't print 'interrupting at irq nn' on the x86 family, it's not all that big a deal just yet and isn't worth a whole line on the boot screen. This could change later in the face of multi-ISA-bus (eg: laptop docking stations with two independent ISA busses) and SMP/APIC systems. The Alpha already has multiple interrupt destinations to deal with.
|
#
45980 |
|
24-Apr-1999 |
kato |
1MB is not 1024 * 1024 * 1024 but 1024 * 1024.
|
#
45897 |
|
21-Apr-1999 |
peter |
Stage 1 of a cleanup of the i386 interrupt registration mechanism. Interrupts under the new scheme are managed by the i386 nexus with the awareness of the resource manager. There is further room for optimizing the interfaces still. All the users of register_intr()/intr_create() should be gone, with the exception of pcic and i386/isa/clock.c.
|
#
45808 |
|
19-Apr-1999 |
peter |
Always create attach points for the various child busses that can be attached to the nexus. With one exception, this (for example) allows you to do wierd things like kldload the eisa bus on the fly and then drivers, and have it auto probe the eisa bus when the drivers come online.
The one exception being pci, it only adds the pcib after the presence of the pci bus is detected and that's #if'ed code.
A side effect of this is that isa and eisa will be attached to the nexus directly rather than the PCI->ISA or PCI->EISA bridges. I'm not sure if this is good or bad at this point, but it seems to be closer to the way things are for the i386 family... This is likely to be followed up.
This also fixes compilation without a PCI bus configured and will allow eisa to work without PCI too.
|
#
45779 |
|
18-Apr-1999 |
kato |
Added PC98 code.
Submitted by: Takahashi Yoshihiro <nyan@wyvern.cc.kogakuin.ac.jp>
|
#
45720 |
|
16-Apr-1999 |
peter |
Bring the 'new-bus' to the i386. This extensively changes the way the i386 platform boots, it is no longer ISA-centric, and is fully dynamic. Most old drivers compile and run without modification via 'compatability shims' to enable a smoother transition. eisa, isapnp and pccard* are not yet using the new resource manager. Once fully converted, all drivers will be loadable, including PCI and ISA.
(Some other changes appear to have snuck in, including a port of Soren's ATA driver to the Alpha. Soren, back this out if you need to.)
This is a checkpoint of work-in-progress, but is quite functional.
The bulk of the work was done over the last few years by Doug Rabson and Garrett Wollman.
Approved by: core
|