ZFS boot inside on the second partition inside a slice

John Baldwin jhb at freebsd.org
Tue Jun 21 15:55:20 UTC 2011


On Tuesday, June 21, 2011 10:50:14 am Henri Hennebert wrote:
> On 06/21/2011 15:01, John Baldwin wrote:
> > Index: zfsldr.S
> > ===================================================================
> > --- zfsldr.S	(revision 223339)
> > +++ zfsldr.S	(working copy)
> > @@ -234,9 +234,12 @@ nread.1:	xor %ecx,%ecx			# Get
> >   		callw read			# Read from disk
> >   		lea 0x10(%bp),%sp		# Clear stack
> >   		jnc return			# If success, return
> > -		mov $msg_read,%si		# Otherwise, set the error
> > -						#  message and fall through to
> > -						#  the error routine
> > +		mov %ah,%al			# Format
> > +		mov $read_err,%di		#  error
> > +		call hex8			#  code
> > +		mov $msg_read,%si		# Set the error message and
> > +						#  fall through to the error
> > +						#  routine
> >   /*
> >    * Print out the error message pointed to by %ds:(%si) followed
> >    * by a prompt, wait for a keypress, and then reboot the machine.
> > @@ -296,12 +299,28 @@ read.1:		mov $msg_chs,%si
> >   		jmp error
> >   msg_chs:	.asciz "CHS not supported"
> >
> > +/*
> > + * Convert AL to hex, saving the result to [EDI].
> > + */
> > +hex8:		push %ax			# Save
> > +		shrb $0x4,%al			# Do upper
> > +		call hex8.1			#  4
> > +		pop %ax				# Restore
> > +hex8.1: 	andb $0xf,%al			# Get lower 4
> > +		cmpb $0xa,%al			# Convert
> > +		sbbb $0x69,%al			#  to hex
> > +		das				#  digit
> > +		orb $0x20,%al			# To lower case
> > +		stosb				# Save char
> > +		ret				# (Recursive)
> > +
> >   /* Messages */
> >
> > -msg_read:	.asciz "Read"
> > -msg_part:	.asciz "Boot"
> > +msg_read:	.ascii "Read error: "
> > +read_err:	.asciz "XX"
> > +msg_part:	.asciz "Boot error"
> >
> > -prompt: 	.asciz " error\r\n"
> > +prompt: 	.asciz "\r\n"
> >
> >   		.org PRT_OFF,0x90
> >
> I get
> 
> Read error: 01

Hmm, that would be 'invalid parameter'.

Can you add a 'foo: jmp foo' infinite loop and move it around to figure out
which read call is failing?

-- 
John Baldwin


More information about the freebsd-stable mailing list