<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/ia64/include/bus.h, branch main</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=main</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2014-07-07T00:27:09Z</updated>
<entry>
<title>Remove ia64.</title>
<updated>2014-07-07T00:27:09Z</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2014-07-07T00:27:09Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=e7d939bda22b07be6b68ba38835c9167212fd56e'/>
<id>urn:sha1:e7d939bda22b07be6b68ba38835c9167212fd56e</id>
<content type='text'>
This includes:
o   All directories named *ia64*
o   All files named *ia64*
o   All ia64-specific code guarded by __ia64__
o   All ia64-specific makefile logic
o   Mention of ia64 in comments and documentation

This excludes:
o   Everything under contrib/
o   Everything under crypto/
o   sys/xen/interface
o   sys/sys/elf_common.h

Discussed at: BSDcan
</content>
</entry>
<entry>
<title>Revert r216134. This checkin broke platforms where bus_space are macros:</title>
<updated>2010-12-03T07:09:23Z</updated>
<author>
<name>Rebecca Cran</name>
<email>brucec@FreeBSD.org</email>
</author>
<published>2010-12-03T07:09:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=c90f7d9b44d487ddaf22fbb23c166db8383a2ded'/>
<id>urn:sha1:c90f7d9b44d487ddaf22fbb23c166db8383a2ded</id>
<content type='text'>
they need to be a single statement, and do { } while (0) doesn't work in this
situation so revert until a solution can be devised.
</content>
</entry>
<entry>
<title>Disallow passing in a count of zero bytes to the bus_space(9) functions.</title>
<updated>2010-12-02T22:19:30Z</updated>
<author>
<name>Rebecca Cran</name>
<email>brucec@FreeBSD.org</email>
</author>
<published>2010-12-02T22:19:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=15b4888a2477399d8dbd56b7c5ff0caad671b5e3'/>
<id>urn:sha1:15b4888a2477399d8dbd56b7c5ff0caad671b5e3</id>
<content type='text'>
Passing a count of zero on i386 and amd64 for [I386|AMD64]_BUS_SPACE_MEM
causes a crash/hang since the 'loop' instruction decrements the counter
before checking if it's zero.

PR:	kern/80980
Discussed with:	jhb
</content>
</entry>
<entry>
<title>Remove clauses 3 and 4, per changes to NetBSD versions of these files.</title>
<updated>2010-09-25T04:41:42Z</updated>
<author>
<name>Warner Losh</name>
<email>imp@FreeBSD.org</email>
</author>
<published>2010-09-25T04:41:42Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=01b5c01caea669d5c398f2a58342061012b022bf'/>
<id>urn:sha1:01b5c01caea669d5c398f2a58342061012b022bf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Some code churn:</title>
<updated>2010-02-14T16:56:24Z</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2010-02-14T16:56:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=26279767e41f5f95bba899fae00f3652e4c17154'/>
<id>urn:sha1:26279767e41f5f95bba899fae00f3652e4c17154</id>
<content type='text'>
o   Eliminate IA64_PHYS_TO_RR6 and change all places where the macro is used
    by calling either bus_space_map() or pmap_mapdev().
o   Implement bus_space_map() in terms of pmap_mapdev() and implement
    bus_space_unmap() in terms of pmap_unmapdev().
o   Have ia64_pib hold the uncached virtual address of the processor interrupt
    block throughout the kernel's life and access the elements of the PIB
    through this structure pointer.

This is a non-functional change with the exception of using ia64_ld1() and
ia64_st8() to write to the PIB. We were still using assignments, for which
the compiler generates semaphore reads -- which cause undefined behaviour
for uncacheable memory. Note also that the memory barriers in ipi_send() are
critical for proper functioning.

With all the mapping of uncached memory done by pmap_mapdev(), we can keep
track of the translations and wire them in the CPU. This then eliminates
the need to reserve a whole region for uncached I/O and it eliminates
translation traps for device I/O accesses.
</content>
</entry>
<entry>
<title>Change BUS_SPACE_MAXADDR from 2^32-1 to 2^64-1. 2^32-1 is representative</title>
<updated>2010-01-02T00:37:00Z</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2010-01-02T00:37:00Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=f7afeafebbb2a6cb3222083376e80c05f64b5dfb'/>
<id>urn:sha1:f7afeafebbb2a6cb3222083376e80c05f64b5dfb</id>
<content type='text'>
for its origin, more than for its accuracy.

MFC after:	1 week
</content>
</entry>
<entry>
<title>Revamp bus_space access functions:</title>
<updated>2009-12-30T18:15:25Z</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2009-12-30T18:15:25Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=938026e334884bebbd68eddb469b5be3688d71ba'/>
<id>urn:sha1:938026e334884bebbd68eddb469b5be3688d71ba</id>
<content type='text'>
o   Optimize for memory mapped I/O by making all I/O port acceses function
    calls and marking the test for the IA64_BUS_SPACE_IO tag with
    __predict_false(). Implement the I/O port access functions in a new
    file, called bus_machdep.c.
o   Change the bus_space_handle_t for memory mapped I/O to the virtual
    address rather than the physical address. This eliminates the PA-&gt;VA
    translation for every I/O access. The handle for I/O port access is
    still the port number.
o   Move inb(), outb(), inw(), outw(), inl(), outl(), and their string
    variants from cpufunc.h and define them in bus.h. On ia64 these are
    not CPU functions at all. In bus.h they are merely aliases for the
    new I/O port access functions defined in bus_machdep.h.
o   Handle the ACPI resource bug in nexus_set_resource(). There we can
    do it once so that we don't have to worry about it whenever we need
    to write to an I/O port that is really a memory mapped address.

The upshot of this change is that the KBI is better defined and that I/O
port access always involves a function call, allowing us to change the
actual implementation without breaking the KBI. For memory mapped I/O the
virtual address is abstracted, so that we can change the VA-&gt;PA mapping
in the kernel without causing an KBI breakage. The exception at this time
is for bus_space_map() and bus_space_unmap().

MFC after:	1 week.
</content>
</entry>
<entry>
<title>Make sure bus space accesses use unorder memory loads and stores.</title>
<updated>2009-12-03T04:06:48Z</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2009-12-03T04:06:48Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=4827e0cd5c03c0183eb1596d5d46eafe9c987f7c'/>
<id>urn:sha1:4827e0cd5c03c0183eb1596d5d46eafe9c987f7c</id>
<content type='text'>
Memory accesses are posted in program order by virtue of the
uncacheable memory attribute.
Since GCC, by default, adds acquire and release semantics to
volatile memory loads and stores, we need to use inline assembly
to guarantee it. With inline assembly, we don't need volatile
pointers anymore.

Itanium does not support semaphore instructions to uncacheable
memory.
</content>
</entry>
<entry>
<title>Remove bus_{mem,p}io.h and related code for a micro-optimization on i386</title>
<updated>2005-05-29T04:42:30Z</updated>
<author>
<name>Yoshihiro Takahashi</name>
<email>nyan@FreeBSD.org</email>
</author>
<published>2005-05-29T04:42:30Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=d4fcf3cba56369bf27a1943ee07b2ddd124b8436'/>
<id>urn:sha1:d4fcf3cba56369bf27a1943ee07b2ddd124b8436</id>
<content type='text'>
and amd64.  The optimization is a trivial on recent machines.

Reviewed by:	-arch (imp, marcel, dfr)
</content>
</entry>
<entry>
<title>Don't define _MACHINE_BUS_MEMIO_H_ nor _MACHINE_BUS_PIO_H_.</title>
<updated>2005-05-10T02:59:24Z</updated>
<author>
<name>Marcel Moolenaar</name>
<email>marcel@FreeBSD.org</email>
</author>
<published>2005-05-10T02:59:24Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6fab4fece24ab9f7b1d97d22cf01266fc1ee5441'/>
<id>urn:sha1:6fab4fece24ab9f7b1d97d22cf01266fc1ee5441</id>
<content type='text'>
</content>
</entry>
</feed>
