History log of /haiku/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.h
Revision Date Author Comments
# 629f071b 27-Feb-2024 X512 <danger_mail@list.ru>

pci: extend MSI interrupt vector number to 32 bits

Also increase MSI message data size to 32 bits according to PCIe spec.

Remove 0xff check for MSI interrupts because it is potentially valid
interrupt vector number. Reject 0xff only for legacy pin interrupts.

- MSI-X supports up to 2048 interrupts per device that do not fit to
`uint8`.

- Non-x86 systems may use separate interrupt vector ranges for
hard-wired interrupts and MSI interrupts so `uint8` is not enough to
represent all of them.

Change-Id: Iaf9ffb197ec23db0f97ffe3ea756d28d7bfc8705
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7433
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# c01fadca 30-Jul-2013 Jerome Duval <jerome.duval@gmail.com>

AHCI: add MSI support.


# 2f0f9d87 14-Sep-2012 Marcus Overhagen <marcus@overhagen.de>

cleanup variable naming for port count


# 1a4dcbd8 28-May-2008 Axel Dörfler <axeld@pinc-software.de>

* gPCI was never set anymore after my changes. I replaced it now by a fPCI
member in AHCIController, since, at least in theory, every PCI device could
come with its own module.
* Fixed exported module names to indicate compliance with the new device
manager.
* Apparently, GCC4 doesn't like mixing C++/C linkage even for variables anymore,
though it really shouldn't care about that.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25699 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 368167ed 26-May-2008 Axel Dörfler <axeld@pinc-software.de>

* Integration of the new driver architecture.
* Moved devfs from fs/ to device_manager/, and separated the legacy driver
support from it.
* Removed fast_log module.
* There are a couple of (temporary) regressions, though:
- legacy SATA and ISA IDE support is disabled, the drivers haven't been
ported yet.
- The not yet used ATA bus manager hasn't been ported yet, either.
- AHCI changes have not been tested.
- the listdev command has been removed from the build (as it currently
doesn't work anymore).
- device manager generated IDs currently are not freed anymore when a device
node is removed.
- generic drivers can't yet use the new driver architecture.
- simple busses that do not support device types won't work yet.
- legacy driver publishing/unpublishing (ie. what USB needs) has not been
tested, and may be broken.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25662 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 27367cc3 19-Nov-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Workaround for ICH6M: ports implemented mask 0 is no longer an error.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22959 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 79844706 10-Nov-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Propagate is-ATAPI restriction to the SCSI bus manager.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22874 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 83447512 03-Oct-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Changed device detection. The driver now first uses device and vendor id to check
for devices. This allows using devices that are in IDE compatibility mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22419 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 22cf14cf 24-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

perform port reset and wait for devices to be detected


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22293 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9382f576 11-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

correct port number handling
allocate memory for command list and fis


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22221 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 25f926d8 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

forward scsi request to the ports


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22146 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4f733fe9 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

added Interrupt handling framework


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22145 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3d416484 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

implemented controller reset and AHCI enable, init a port object for each implemented device port


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22144 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 105f6223 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

print proper values for zero-based numbers


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22141 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 093a713d 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

map registers and print some information


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22137 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 036a8857 28-Aug-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

added a workaround to prevent loading the driver multiple times for the same device


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22099 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4f6fa362 27-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

* Fixed driver initialization - you are supposed to call init_driver()
and uninit_driver() yourself. We're also using this to let the controller
access the pci_device object.
* Fixed some style violations for your pleasure ;-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22082 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 48a55608 26-Aug-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

added a completely broken way to get the pci_device


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22075 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21255d1f 26-Aug-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

moved controller specific functionality into it's own class


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22069 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c01fadcadb0f00bfeac3e7c5572f9ebdd8301799 30-Jul-2013 Jerome Duval <jerome.duval@gmail.com>

AHCI: add MSI support.


# 2f0f9d8780ed3f7ec4804f2aba568868f75251f3 14-Sep-2012 Marcus Overhagen <marcus@overhagen.de>

cleanup variable naming for port count


# 1a4dcbd8dedf06b9625fcf6ad4c74b14cb796803 28-May-2008 Axel Dörfler <axeld@pinc-software.de>

* gPCI was never set anymore after my changes. I replaced it now by a fPCI
member in AHCIController, since, at least in theory, every PCI device could
come with its own module.
* Fixed exported module names to indicate compliance with the new device
manager.
* Apparently, GCC4 doesn't like mixing C++/C linkage even for variables anymore,
though it really shouldn't care about that.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25699 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 368167ede8118f72da8c9ac5bb98ce9b46a8a639 26-May-2008 Axel Dörfler <axeld@pinc-software.de>

* Integration of the new driver architecture.
* Moved devfs from fs/ to device_manager/, and separated the legacy driver
support from it.
* Removed fast_log module.
* There are a couple of (temporary) regressions, though:
- legacy SATA and ISA IDE support is disabled, the drivers haven't been
ported yet.
- The not yet used ATA bus manager hasn't been ported yet, either.
- AHCI changes have not been tested.
- the listdev command has been removed from the build (as it currently
doesn't work anymore).
- device manager generated IDs currently are not freed anymore when a device
node is removed.
- generic drivers can't yet use the new driver architecture.
- simple busses that do not support device types won't work yet.
- legacy driver publishing/unpublishing (ie. what USB needs) has not been
tested, and may be broken.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25662 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 27367cc30809568f4fd7480ee160af46511209f9 19-Nov-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Workaround for ICH6M: ports implemented mask 0 is no longer an error.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22959 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 79844706c278112c1e949850c11757de3fd26fc0 10-Nov-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Propagate is-ATAPI restriction to the SCSI bus manager.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22874 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 83447512ed157f2fbe0165c57a924aad1de14c43 03-Oct-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

Changed device detection. The driver now first uses device and vendor id to check
for devices. This allows using devices that are in IDE compatibility mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22419 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 22cf14cfbeb75dfc24947cb395368050f919b127 24-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

perform port reset and wait for devices to be detected


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22293 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9382f576917776521166203d7a1ecde8aaab8341 11-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

correct port number handling
allocate memory for command list and fis


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22221 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 25f926d8e4b852f0d88a63ce005c18309205407b 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

forward scsi request to the ports


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22146 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4f733fe93bda89631a901a417e0cbca1b00b97c0 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

added Interrupt handling framework


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22145 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3d41648479b388410eaecae895cc5bcf6f931408 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

implemented controller reset and AHCI enable, init a port object for each implemented device port


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22144 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 105f6223108a543bed34c92210b81edfd7173898 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

print proper values for zero-based numbers


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22141 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 093a713df2e9cf464741c78b3e8bc37df8d0a2b1 01-Sep-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

map registers and print some information


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22137 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 036a8857a688d19fa7d268315d2df9253112e573 28-Aug-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

added a workaround to prevent loading the driver multiple times for the same device


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22099 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4f6fa362cfa47f22a0c789a42d35556d7ac25a31 27-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

* Fixed driver initialization - you are supposed to call init_driver()
and uninit_driver() yourself. We're also using this to let the controller
access the pci_device object.
* Fixed some style violations for your pleasure ;-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22082 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 48a55608e6e5e34e123d00c5e7f07581fcf70473 26-Aug-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

added a completely broken way to get the pci_device


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22075 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21255d1fc7c8179fbcb979c4600884605b8973c3 26-Aug-2007 Marcus Overhagen <marcusoverhagen@gmail.com>

moved controller specific functionality into it's own class


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22069 a95241bf-73f2-0310-859d-f6bbb57e9c96