Home | History | Annotate | Download | only in pci
History log of /src/sys/arch/powerpc/pci/pci_machdep_ofw.c
RevisionDateAuthorComments
 1.22  01-Jun-2017  chs remove checks for failure after memory allocation calls that cannot fail:

kmem_alloc() with KM_SLEEP
kmem_zalloc() with KM_SLEEP
percpu_alloc()
pserialize_create()
psref_class_create()

all of these paths include an assertion that the allocation has not failed,
so callers should not assert that again.
 1.21  18-Oct-2014  snj branches: 1.21.2;
src is too big these days to tolerate superfluous apostrophes. It's
"its", people!
 1.20  25-Mar-2014  matt sprintf -> snprintf
 1.19  03-Nov-2013  mrg - remove set but unused variables
 1.18  01-Feb-2012  matt branches: 1.18.6; 1.18.10;
Use kmem instead of malloc. Remove unneeded <sys/malloc.h> includes.
 1.17  22-Jun-2011  matt branches: 1.17.2; 1.17.6;
Add support pci_intr_setattr.
Export non-inline version of pci api for modules (_MODULE is defined).
Fix definition of pc_conf_hook and pc_conf_interrupt.
Switch to using inlines instead of macros.
Switch ibm4xx to use <powerpc/pci_machdep.h>
 1.16  18-Jun-2011  matt Use <sys/foo.h> instead of <machine/foo.h> if such a file exists.
Don't assume <sys/cpu.h> includes <powerpc/subarch/cpu*.h>. Include it
explicitly.
 1.15  04-Apr-2011  dyoung branches: 1.15.2;
Neither pci_dma64_available(), pci_probe_device(), pci_mapreg_map(9),
pci_find_rom(), pci_intr_map(9), pci_enumerate_bus(), nor the match
predicate passed to pciide_compat_intr_establish() should ever modify
their pci_attach_args argument, so make their pci_attach_args arguments
const and deal with the fallout throughout the kernel.

For the most part, these changes add a 'const' where there was no
'const' before, however, some drivers and MD code used to modify
pci_attach_args. Now those drivers either copy their pci_attach_args
and modify the copy, or refrain from modifying pci_attach_args:

Xen: according to Manuel Bouyer, writing to pci_attach_args in
pci_intr_map() was a leftover from Xen 2. Probably a bug. I
stopped writing it. I have not tested this change.

siside(4): sis_hostbr_match() needlessly wrote to pci_attach_args.
Probably a bug. I use a temporary variable. I have not tested this
change.

slide(4): sl82c105_chip_map() overwrote the caller's pci_attach_args.
Probably a bug. Use a local pci_attach_args. I have not tested
this change.

viaide(4): via_sata_chip_map() and via_sata_chip_map_new() overwrote the
caller's pci_attach_args. Probably a bug. Make a local copy of the
caller's pci_attach_args and modify the copy. I have not tested
this change.

While I'm here, make pci_mapreg_submap() static.

With these changes in place, I have tested the compilation of these
kernels:

alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-eb NSLU2
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE GUMSTIX
HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321 IXDP425 IXM1200
KUROBOX_PRO LUBBOCK MARVELL_NAS NAPPI SHEEVAPLUG SMDK2800 TEAMASA_NPWR
TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sgimips GENERIC32_IP2x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC

As of Sun Apr 3 15:26:26 CDT 2011, I could not compile these kernels
with or without my patches in place:

### evbmips-el GDIUM

nbmake: nbmake: don't know how to make /home/dyoung/pristine-nbsd/src/sys/arch/mips/mips/softintr.c. Stop

### evbarm-el MPCSA_GENERIC
src/sys/arch/evbarm/conf/MPCSA_GENERIC:318: ds1672rtc*: unknown device `ds1672rtc'

### ia64 GENERIC

/tmp/genassym.28085/assym.c: In function 'f111':
/tmp/genassym.28085/assym.c:67: error: invalid application of 'sizeof' to incomplete type 'struct pcb'
/tmp/genassym.28085/assym.c:76: error: dereferencing pointer to incomplete type

### sgimips GENERIC32_IP3x

crmfb.o: In function `crmfb_attach':
crmfb.c:(.text+0x2304): undefined reference to `ddc_read_edid'
crmfb.c:(.text+0x2304): relocation truncated to fit: R_MIPS_26 against `ddc_read_edid'
crmfb.c:(.text+0x234c): undefined reference to `edid_parse'
crmfb.c:(.text+0x234c): relocation truncated to fit: R_MIPS_26 against `edid_parse'
crmfb.c:(.text+0x2354): undefined reference to `edid_print'
crmfb.c:(.text+0x2354): relocation truncated to fit: R_MIPS_26 against `edid_print'
 1.14  08-May-2010  kiyohara branches: 1.14.2;
Rename PCI_PRODUCT_MARVELL_MV64360 from PCI_PRODUCT_MARVELL_GT64360.
 1.13  19-Apr-2010  kiyohara Remove white-spaces.
 1.12  28-Apr-2008  martin branches: 1.12.20; 1.12.22;
Remove clause 3 and 4 from TNF licenses
 1.11  23-Feb-2008  phx branches: 1.11.2; 1.11.4;
On the Pegasos2, we must never run PCI-configure for the MV64361 host bridge,
otherwise the devices on that bus might no longer work correctly (e.g.
interrupt flood).
Approved by garbled.
 1.10  11-Feb-2008  garbled branches: 1.10.2; 1.10.6;
Use model_init to clean up how we decide the ranges for
PCI_NETBSD_CONFIGURE. Add some code to hopefully better handle the
firepower and powerstackII, based on the OFW dumps from those machines.
Untested on those machines, but doesn't break anything on pegasos/7044.
 1.9  28-Jan-2008  garbled Apparently BRIDGE mode allows BAT registers, so re-enable that code.
Change the pegasos PCI_NETBSD_CONFIGURE arguments around to wire up mem
space into the correct area, and move the io regs a little to make it
work properly. Just avoid the secondary PCI entirely.
Change the list of things that we fiddle with in pci_conf_hook. Map mem
on the fwohci, avoid display cards, avoid IO on the auvia.
Change some printf's to aprint_*
Yank a call to genppc_pci_indirect_make_tag and change it to the
bus-independant pci call instead. (in pci_conf_hook)
 1.8  17-Jan-2008  garbled Add support to ofppc for the IBM 7044-270 machine. This is a POWER3-II
based machine. Currently the kernel to run on this machine is
incompatible with the standard GENERIC kernel, so for now, we have a
separate GENERIC_B64. Eventually, I hope to combine the two.

Please note, this is a port of 32bit ofppc, not a powerpc64 port.

Thanks to Matt Thomas and Kevin Bowling for helping to make this port
possible.

Summary of changes:

Change ofwpci to use the ofmethod config for configuring the PCI bus,
rather than indirect configuration.
Move the wiring of the interrupt controllers from at the start of the
boot, into the configuration of the first PCI bus.
Rewrite the map_isa_ioregs() hack to work on a machine without BATs
Fix a ton of bugs in the genofw_find_pics routine, and in the map_space code.
Split the pic_openpic into openpic_common and pic_openpic.
Create a new pic_distopenpic driver, for the distributed openpic found on
some newer IBM machines.
Fix a bad panic in pmap_extract on 64bit bridge mode
 1.7  11-Jan-2008  mrg enable PCI_NETBSD_CONFIGURE for ofppc.

the call to pci_configure_bus(9) and it's supporting code is
copied verbatim from the prep port.

this allows us to completely remove the really gross pegasos
specific pegasospci_indirect_attach_hook() that set various
pci command regs, since all those devices (mostly work now,
see below) and additionally PCI plugin cards work now too.

it also makes the pegasos onboard vr(4) ethernet work with
disk boot (it previously only worked with netboot.)

in the generic macppc ofw pci conf hook and for pegasos,
don't configure the viaide(4) device, and don't configure
memory space on the fwohci(4) device.


with this, and my other recent ofppc/ppc changes the pegasos
port is mostly functional. the marvell gige is not working,
and my 512mb appears as only about 256mb, but otherwise
this port is almost done!
 1.6  05-Nov-2007  garbled branches: 1.6.2; 1.6.4; 1.6.10;
Lots of small changes for ofppc:

Remove the ofb driver. I'm not interested in trying to make this work.
It should be replaced with the genfb driver, which I have added,
commented out because that driver needs work before it will function on
ofppc. (it's too panic-happy, and ofppc needs a working autoconf.c)

Change the way we do isa_inb/outb. The new way is a slightly nastier
hack, but won't run afoul of the other isa drivers as much.

Fix ofw_consinit.c to remove the dependency on ofb.
 1.5  04-Nov-2007  garbled Apply a patch from Frank Wille that fixes a stupid in the ofw interrupt map
discovery where the pin value was off by one.
 1.4  26-Oct-2007  garbled branches: 1.4.2;
Add code to properly detect the interrupt mapping on the PegasosII, and any
other OFW machine that fails our first two methods.
 1.3  25-Oct-2007  garbled Add a bunch of fixes and minor rewrites to ofppc to bring it closer to
working properly. This is still a work in progress, and all work so far
has been based on the PegasosII machne.

1) Rewrite how the ISA memory and IO space maps are found. More work
will still need to be done in this area.
2) Add a new OFW method of pci configuration. So far I can only get this
to work on the primary PCI bus on the Pegasos. Unsure if this is a
pegasos bug or a code bug.
3) Add the rtas device to ofppc, and add an "rtas_reboot" function to
rtas to allow me to reboot the PegasosII. The rtas driver works, and is
a great start but needs to be changed slightly to allow easier access to
the functions from outside the driver.
4) Fix a number of bugs that existed in the shared PCI code for ofw that
probably weren't tickled by macppc.

There is much much more left to do here, this is all still a work in
progress, but this commit will allow other people to play around with the
code if they want to.
 1.2  17-Oct-2007  garbled branches: 1.2.2;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.1  21-Jun-2007  garbled branches: 1.1.2; 1.1.6; 1.1.8;
file pci_machdep_ofw.c was initially added on branch ppcoea-renovation.
 1.1.8.1  18-Oct-2007  yamt sync with head.
 1.1.6.3  06-Nov-2007  joerg Sync with HEAD.
 1.1.6.2  04-Nov-2007  jmcneill Sync with HEAD.
 1.1.6.1  28-Oct-2007  joerg Sync with HEAD.
 1.1.2.1  21-Jun-2007  garbled Add a bunch of common pci_machdep routines for OFW machines. Used only
by ofppc for now, eventually, macppc should make use of these.
 1.2.2.4  03-Dec-2007  ad Sync with HEAD.
 1.2.2.3  03-Dec-2007  ad Sync with HEAD.
 1.2.2.2  23-Oct-2007  ad Sync with head.
 1.2.2.1  17-Oct-2007  ad file pci_machdep_ofw.c was added on branch vmlocking on 2007-10-23 20:36:13 +0000
 1.4.2.6  27-Feb-2008  yamt sync with head.
 1.4.2.5  04-Feb-2008  yamt sync with head.
 1.4.2.4  21-Jan-2008  yamt sync with head
 1.4.2.3  15-Nov-2007  yamt sync with head.
 1.4.2.2  27-Oct-2007  yamt sync with head.
 1.4.2.1  26-Oct-2007  yamt file pci_machdep_ofw.c was added on branch yamt-lazymbuf on 2007-10-27 11:27:56 +0000
 1.6.10.2  19-Jan-2008  bouyer Sync with HEAD
 1.6.10.1  11-Jan-2008  bouyer Sync with HEAD
 1.6.4.3  23-Mar-2008  matt sync with HEAD
 1.6.4.2  06-Nov-2007  matt sync with HEAD
 1.6.4.1  05-Nov-2007  matt file pci_machdep_ofw.c was added on branch matt-armv6 on 2007-11-06 23:20:48 +0000
 1.6.2.1  18-Feb-2008  mjf Sync with HEAD.
 1.10.6.2  02-Jun-2008  mjf Sync with HEAD.
 1.10.6.1  03-Apr-2008  mjf Sync with HEAD.
 1.10.2.1  24-Mar-2008  keiichi sync with head.
 1.11.4.2  11-Aug-2010  yamt sync with head.
 1.11.4.1  16-May-2008  yamt sync with head.
 1.11.2.1  18-May-2008  yamt sync with head.
 1.12.22.2  21-Apr-2011  rmind sync with head
 1.12.22.1  30-May-2010  rmind sync with head
 1.12.20.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.12.20.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.14.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.15.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.17.6.1  18-Feb-2012  mrg merge to -current.
 1.17.2.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.17.2.1  17-Apr-2012  yamt sync with head
 1.18.10.1  18-May-2014  rmind sync with head
 1.18.6.2  03-Dec-2017  jdolecek update from HEAD
 1.18.6.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.21.2.1  28-Aug-2017  skrll Sync with HEAD

RSS XML Feed