1) Swap is not accounted as available RAM for this. There is no limit on the sum of swap + RAM, only a limit on swap's size (man mkswap says it is 2Gb). And with 2Gb of RAM you must use HIGHEM support since it is more than 1 Gb of RAM.
2) No idea about this, but the Documentation/Configure.help seems to say you are right. But it seems that drivers must do some work themselves to use it. Actually, for what I could check the scsi driver support it: grep through the kernel for "blk_nohighio". Only drivers/scsi/ contains references to it and claims in comment to support it.
However, at the very beginning of 2.5 the block API was completely changed; the 2.6 drivers using the new API (almost all) can more easily support Highmem, if I'm not wrong. See in the 2.6 kernel sources the file Documentation/block/biodoc.txt.
Re: Swap
1) Swap is not accounted as available RAM for this. There is no limit on the sum of swap + RAM, only a limit on swap's size (man mkswap says it is 2Gb). And with 2Gb of RAM you must use HIGHEM support since it is more than 1 Gb of RAM.
2) No idea about this, but the Documentation/Configure.help seems to say you are right. But it seems that drivers must do some work themselves to use it. Actually, for what I could check the scsi driver support it: grep through the kernel for "blk_nohighio". Only drivers/scsi/ contains references to it and claims in comment to support it.
However, at the very beginning of 2.5 the block API was completely changed; the 2.6 drivers using the new API (almost all) can more easily support Highmem, if I'm not wrong. See in the 2.6 kernel sources the file Documentation/block/biodoc.txt.