Kernel 2.6.28.9 says :

 ACPI: EC: input buffer is not empty, aborting transaction
 ACPI: EC: input buffer is not empty, aborting transaction
 ACPI: EC: input buffer is not empty, aborting transaction
 ACPI Exception (evregion-0419): AE_TIME, Returned by Handler for [EmbeddedControl] [20080926]
 ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0.SBRG.EC__.BAT1._STA] (Node f70309f0), AE_TIME
 ACPI Error (uteval-0232): Method execution failed [\_SB_.PCI0.SBRG.EC__.BAT1._STA] (Node f70309f0), AE_TIME

It seems there is a problem with DSDT table (yet another). Let check DSTD table [1]:

$ sudo acpidump > /tmp/acpi.dump
$ acpixtract DSDT /tmp/acpi.dump
$ iasl -d DSDT.dat

Definition of revelant method is:

 Device (EC) {
   Device (BAT1) {
     Method (_STA, 0, NotSerialized)
     {
       If (MYEC)
       {
         If (MBTS)
         {
           Return (0x1F)
         }
         Else
         {
           Return (0x0F)
         }
       }
       Else
       {
         Return (0x0F)
       }
     }
   }
 }

I am not fluent in ASL (Acpi Source Language), but Alexender Sack have nearly same problem with MSI-1710A under FreeBSD. The clean way to correct this problem whould be patching ACPI interpreter. I will open a bug about it soon. Nevertheless, for now, we can apply a work around by replacing this method with:

 Method (_STA, 0, NotSerialized)
 {
   If (^^ADP1.BFLG)
   {
     Return (0x1F)
   }
   Else
   {
     Return (0x0F)
   }
 }

We now have to override system DSDT [2] :

 $ iasl -tc DSDT.dsl
 $ cp DSDT.hex linux-source/include/

Configure these option in kernel:

CONFIG_STANDALONE=n
CONFIG_ACPI_CUSTOM_DSDT=y
CONFIG_ACPI_CUSTOM_DSDT_FILE="DSDT.hex"

And rebuilt it.

Battery should appear.

Notes

[1] Mor information about how to trace ACPI in Documentation/acpi/debug.txt

[2] More information about how to http://www.lesswatts.org/projects/acpi/overridingDSDT.php